From ffe4eaf00d8780bdc6fb3d7aca3eda847e887007 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Florian=20M=C3=BCllner?= Date: Thu, 24 Sep 2015 16:08:13 +0200 Subject: [PATCH] st: Use G_DECLARE_*_TYPE Cut down on boilerplate by using the (no longer that) new helper macros. We don't care about breaking ABI in private libraries, so use G_DECLARE_FINAL_TYPE even where the class struct used to be exposed in the header, except for types we inherit from ourselves (obviously) or where the class exposes any vfuncs (where changes could affect inheritance in extensions). --- src/st/st-adjustment.c | 40 ++--- src/st/st-adjustment.h | 29 +-- src/st/st-bin.c | 53 +++--- src/st/st-bin.h | 25 +-- src/st/st-border-image.h | 10 +- src/st/st-box-layout-child.h | 29 +-- src/st/st-box-layout.h | 29 +-- src/st/st-button.c | 163 ++++++++++------- src/st/st-button.h | 29 +-- src/st/st-clipboard.h | 29 +-- src/st/st-drawing-area.c | 25 +-- src/st/st-drawing-area.h | 23 +-- src/st/st-entry.c | 90 ++++++---- src/st/st-entry.h | 28 +-- src/st/st-focus-manager.h | 20 +-- src/st/st-icon.h | 33 +--- src/st/st-im-text.h | 14 +- src/st/st-label.h | 15 +- src/st/st-scroll-bar.c | 168 ++++++++++-------- src/st/st-scroll-bar.h | 28 +-- src/st/st-scroll-view-fade.c | 11 -- src/st/st-scroll-view-fade.h | 8 +- src/st/st-scroll-view.h | 15 +- src/st/st-scrollable.c | 34 +--- src/st/st-scrollable.h | 7 +- src/st/st-texture-cache.h | 18 +- src/st/st-theme-context.c | 4 - src/st/st-theme-context.h | 11 +- src/st/st-theme-node-private.h | 5 - src/st/st-theme-node-transition.c | 15 +- src/st/st-theme-node-transition.h | 25 +-- src/st/st-theme-node.h | 11 +- src/st/st-theme.c | 5 - src/st/st-theme.h | 10 +- src/st/st-widget.c | 285 +++++++++++++++++++----------- src/st/st-widget.h | 27 +-- 36 files changed, 552 insertions(+), 819 deletions(-) diff --git a/src/st/st-adjustment.c b/src/st/st-adjustment.c index baac36990..005c6eb76 100644 --- a/src/st/st-adjustment.c +++ b/src/st/st-adjustment.c @@ -37,6 +37,8 @@ #include "st-adjustment.h" #include "st-private.h" +typedef struct _StAdjustmentPrivate StAdjustmentPrivate; + struct _StAdjustmentPrivate { /* Do not sanity-check values while constructing, @@ -90,6 +92,7 @@ st_adjustment_constructed (GObject *object) { GObjectClass *g_class; StAdjustment *self = ST_ADJUSTMENT (object); + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (self); g_class = G_OBJECT_CLASS (st_adjustment_parent_class); /* The docs say we're suppose to chain up, but would crash without @@ -100,8 +103,8 @@ st_adjustment_constructed (GObject *object) g_class->constructed (object); } - ST_ADJUSTMENT (self)->priv->is_constructing = FALSE; - st_adjustment_clamp_page (self, self->priv->lower, self->priv->upper); + priv->is_constructing = FALSE; + st_adjustment_clamp_page (self, priv->lower, priv->upper); } static void @@ -110,7 +113,7 @@ st_adjustment_get_property (GObject *gobject, GValue *value, GParamSpec *pspec) { - StAdjustmentPrivate *priv = ST_ADJUSTMENT (gobject)->priv; + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (ST_ADJUSTMENT (gobject)); switch (prop_id) { @@ -271,9 +274,8 @@ st_adjustment_class_init (StAdjustmentClass *klass) static void st_adjustment_init (StAdjustment *self) { - self->priv = st_adjustment_get_instance_private (self); - - self->priv->is_constructing = TRUE; + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (self); + priv->is_constructing = TRUE; } StAdjustment * @@ -297,13 +299,9 @@ st_adjustment_new (gdouble value, gdouble st_adjustment_get_value (StAdjustment *adjustment) { - StAdjustmentPrivate *priv; - g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), 0); - priv = adjustment->priv; - - return priv->value; + return ((StAdjustmentPrivate *)st_adjustment_get_instance_private (adjustment))->value; } void @@ -314,7 +312,7 @@ st_adjustment_set_value (StAdjustment *adjustment, g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); - priv = adjustment->priv; + priv = st_adjustment_get_instance_private (adjustment); /* Defer clamp until after construction. */ if (!priv->is_constructing) @@ -342,7 +340,7 @@ st_adjustment_clamp_page (StAdjustment *adjustment, g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); - priv = adjustment->priv; + priv = st_adjustment_get_instance_private (adjustment); lower = CLAMP (lower, priv->lower, priv->upper - priv->page_size); upper = CLAMP (upper, priv->lower + priv->page_size, priv->upper); @@ -369,7 +367,7 @@ static gboolean st_adjustment_set_lower (StAdjustment *adjustment, gdouble lower) { - StAdjustmentPrivate *priv = adjustment->priv; + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); if (priv->lower != lower) { @@ -393,7 +391,7 @@ static gboolean st_adjustment_set_upper (StAdjustment *adjustment, gdouble upper) { - StAdjustmentPrivate *priv = adjustment->priv; + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); if (priv->upper != upper) { @@ -417,7 +415,7 @@ static gboolean st_adjustment_set_step_increment (StAdjustment *adjustment, gdouble step) { - StAdjustmentPrivate *priv = adjustment->priv; + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); if (priv->step_increment != step) { @@ -437,7 +435,7 @@ static gboolean st_adjustment_set_page_increment (StAdjustment *adjustment, gdouble page) { - StAdjustmentPrivate *priv = adjustment->priv; + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); if (priv->page_increment != page) { @@ -457,7 +455,7 @@ static gboolean st_adjustment_set_page_size (StAdjustment *adjustment, gdouble size) { - StAdjustmentPrivate *priv = adjustment->priv; + StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment); if (priv->page_size != size) { @@ -494,7 +492,7 @@ st_adjustment_set_values (StAdjustment *adjustment, g_return_if_fail (step_increment >= 0 && step_increment <= G_MAXDOUBLE); g_return_if_fail (page_increment >= 0 && page_increment <= G_MAXDOUBLE); - priv = adjustment->priv; + priv = st_adjustment_get_instance_private (adjustment); emit_changed = FALSE; @@ -543,7 +541,7 @@ st_adjustment_get_values (StAdjustment *adjustment, g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); - priv = adjustment->priv; + priv = st_adjustment_get_instance_private (adjustment); if (lower) *lower = priv->lower; @@ -585,7 +583,7 @@ st_adjustment_adjust_for_scroll_event (StAdjustment *adjustment, g_return_if_fail (ST_IS_ADJUSTMENT (adjustment)); - priv = adjustment->priv; + priv = st_adjustment_get_instance_private (adjustment); scroll_unit = pow (priv->page_size, 2.0 / 3.0); diff --git a/src/st/st-adjustment.h b/src/st/st-adjustment.h index fe041cf8a..529d8628e 100644 --- a/src/st/st-adjustment.h +++ b/src/st/st-adjustment.h @@ -30,31 +30,8 @@ G_BEGIN_DECLS -#define ST_TYPE_ADJUSTMENT (st_adjustment_get_type()) -#define ST_ADJUSTMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_ADJUSTMENT, StAdjustment)) -#define ST_IS_ADJUSTMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_ADJUSTMENT)) -#define ST_ADJUSTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_ADJUSTMENT, StAdjustmentClass)) -#define ST_IS_ADJUSTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_ADJUSTMENT)) -#define ST_ADJUSTMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_ADJUSTMENT, StAdjustmentClass)) - -typedef struct _StAdjustment StAdjustment; -typedef struct _StAdjustmentPrivate StAdjustmentPrivate; -typedef struct _StAdjustmentClass StAdjustmentClass; - -/** - * StAdjustment: - * - * Class for handling an interval between to values. The contents of - * the #StAdjustment are private and should be accessed using the - * public API. - */ -struct _StAdjustment -{ - /*< private >*/ - GObject parent_instance; - - StAdjustmentPrivate *priv; -}; +#define ST_TYPE_ADJUSTMENT (st_adjustment_get_type()) +G_DECLARE_DERIVABLE_TYPE (StAdjustment, st_adjustment, ST, ADJUSTMENT, GObject) /** * StAdjustmentClass: @@ -71,8 +48,6 @@ struct _StAdjustmentClass void (* changed) (StAdjustment *adjustment); }; -GType st_adjustment_get_type (void) G_GNUC_CONST; - StAdjustment *st_adjustment_new (gdouble value, gdouble lower, gdouble upper, diff --git a/src/st/st-bin.c b/src/st/st-bin.c index 6f9a4e6ca..f8b58da99 100644 --- a/src/st/st-bin.c +++ b/src/st/st-bin.c @@ -38,6 +38,7 @@ #include "st-enum-types.h" #include "st-private.h" +typedef struct _StBinPrivate StBinPrivate; struct _StBinPrivate { ClutterActor *child; @@ -78,10 +79,11 @@ static void st_bin_remove (ClutterContainer *container, ClutterActor *actor) { - StBinPrivate *priv = ST_BIN (container)->priv; + StBin *bin = ST_BIN (container); + StBinPrivate *priv = st_bin_get_instance_private (bin); if (priv->child == actor) - st_bin_set_child (ST_BIN (container), NULL); + st_bin_set_child (bin, NULL); } static void @@ -96,7 +98,7 @@ st_bin_allocate (ClutterActor *self, const ClutterActorBox *box, ClutterAllocationFlags flags) { - StBinPrivate *priv = ST_BIN (self)->priv; + StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (self)); clutter_actor_set_allocation (self, box, flags); @@ -122,7 +124,7 @@ st_bin_get_preferred_width (ClutterActor *self, gfloat *min_width_p, gfloat *natural_width_p) { - StBinPrivate *priv = ST_BIN (self)->priv; + StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (self)); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self)); st_theme_node_adjust_for_height (theme_node, &for_height); @@ -151,7 +153,7 @@ st_bin_get_preferred_height (ClutterActor *self, gfloat *min_height_p, gfloat *natural_height_p) { - StBinPrivate *priv = ST_BIN (self)->priv; + StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (self)); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self)); st_theme_node_adjust_for_width (theme_node, &for_width); @@ -177,7 +179,7 @@ st_bin_get_preferred_height (ClutterActor *self, static void st_bin_dispose (GObject *gobject) { - StBinPrivate *priv = ST_BIN (gobject)->priv; + StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (gobject)); if (priv->child) clutter_actor_destroy (priv->child); @@ -189,7 +191,7 @@ st_bin_dispose (GObject *gobject) static void st_bin_popup_menu (StWidget *widget) { - StBinPrivate *priv = ST_BIN (widget)->priv; + StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (widget)); if (priv->child && ST_IS_WIDGET (priv->child)) st_widget_popup_menu (ST_WIDGET (priv->child)); @@ -200,7 +202,7 @@ st_bin_navigate_focus (StWidget *widget, ClutterActor *from, GtkDirectionType direction) { - StBinPrivate *priv = ST_BIN (widget)->priv; + StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (widget)); ClutterActor *bin_actor = CLUTTER_ACTOR (widget); if (st_widget_get_can_focus (widget)) @@ -231,6 +233,7 @@ st_bin_set_property (GObject *gobject, GParamSpec *pspec) { StBin *bin = ST_BIN (gobject); + StBinPrivate *priv = st_bin_get_instance_private (bin); switch (prop_id) { @@ -241,24 +244,24 @@ st_bin_set_property (GObject *gobject, case PROP_X_ALIGN: st_bin_set_alignment (bin, g_value_get_enum (value), - bin->priv->y_align); + priv->y_align); break; case PROP_Y_ALIGN: st_bin_set_alignment (bin, - bin->priv->x_align, + priv->x_align, g_value_get_enum (value)); break; case PROP_X_FILL: st_bin_set_fill (bin, g_value_get_boolean (value), - bin->priv->y_fill); + priv->y_fill); break; case PROP_Y_FILL: st_bin_set_fill (bin, - bin->priv->x_fill, + priv->x_fill, g_value_get_boolean (value)); break; @@ -273,7 +276,7 @@ st_bin_get_property (GObject *gobject, GValue *value, GParamSpec *pspec) { - StBinPrivate *priv = ST_BIN (gobject)->priv; + StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (gobject)); switch (prop_id) { @@ -389,10 +392,10 @@ st_bin_class_init (StBinClass *klass) static void st_bin_init (StBin *bin) { - bin->priv = st_bin_get_instance_private (bin); + StBinPrivate *priv = st_bin_get_instance_private (bin); - bin->priv->x_align = ST_ALIGN_MIDDLE; - bin->priv->y_align = ST_ALIGN_MIDDLE; + priv->x_align = ST_ALIGN_MIDDLE; + priv->y_align = ST_ALIGN_MIDDLE; } /** @@ -426,7 +429,7 @@ st_bin_set_child (StBin *bin, g_return_if_fail (ST_IS_BIN (bin)); g_return_if_fail (child == NULL || CLUTTER_IS_ACTOR (child)); - priv = bin->priv; + priv = st_bin_get_instance_private (bin); if (priv->child == child) return; @@ -460,7 +463,7 @@ st_bin_get_child (StBin *bin) { g_return_val_if_fail (ST_IS_BIN (bin), NULL); - return bin->priv->child; + return ((StBinPrivate *)st_bin_get_instance_private (bin))->child; } /** @@ -482,7 +485,7 @@ st_bin_set_alignment (StBin *bin, g_return_if_fail (ST_IS_BIN (bin)); - priv = bin->priv; + priv = st_bin_get_instance_private (bin); g_object_freeze_notify (G_OBJECT (bin)); @@ -524,7 +527,7 @@ st_bin_get_alignment (StBin *bin, g_return_if_fail (ST_IS_BIN (bin)); - priv = bin->priv; + priv = st_bin_get_instance_private (bin); if (x_align) *x_align = priv->x_align; @@ -552,7 +555,7 @@ st_bin_set_fill (StBin *bin, g_return_if_fail (ST_IS_BIN (bin)); - priv = bin->priv; + priv = st_bin_get_instance_private (bin); g_object_freeze_notify (G_OBJECT (bin)); @@ -591,11 +594,15 @@ st_bin_get_fill (StBin *bin, gboolean *x_fill, gboolean *y_fill) { + StBinPrivate *priv; + g_return_if_fail (ST_IS_BIN (bin)); + priv = st_bin_get_instance_private (bin); + if (x_fill) - *x_fill = bin->priv->x_fill; + *x_fill = priv->x_fill; if (y_fill) - *y_fill = bin->priv->y_fill; + *y_fill = priv->y_fill; } diff --git a/src/st/st-bin.h b/src/st/st-bin.h index 2c2e58898..0a22ca0cd 100644 --- a/src/st/st-bin.h +++ b/src/st/st-bin.h @@ -30,28 +30,7 @@ G_BEGIN_DECLS #define ST_TYPE_BIN (st_bin_get_type ()) -#define ST_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_BIN, StBin)) -#define ST_IS_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_BIN)) -#define ST_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_BIN, StBinClass)) -#define ST_IS_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_BIN)) -#define ST_BIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_BIN, StBinClass)) - -typedef struct _StBin StBin; -typedef struct _StBinPrivate StBinPrivate; -typedef struct _StBinClass StBinClass; - -/** - * StBin: - * - * The #StBin struct contains only private data - */ -struct _StBin -{ - /*< private >*/ - StWidget parent_instance; - - StBinPrivate *priv; -}; +G_DECLARE_DERIVABLE_TYPE (StBin, st_bin, ST, BIN, StWidget) /** * StBinClass: @@ -64,8 +43,6 @@ struct _StBinClass StWidgetClass parent_class; }; -GType st_bin_get_type (void) G_GNUC_CONST; - StWidget * st_bin_new (void); void st_bin_set_child (StBin *bin, ClutterActor *child); diff --git a/src/st/st-border-image.h b/src/st/st-border-image.h index 72ec8ec85..9c581522f 100644 --- a/src/st/st-border-image.h +++ b/src/st/st-border-image.h @@ -28,17 +28,9 @@ G_BEGIN_DECLS /* A StBorderImage encapsulates an image with specified unscaled borders on each edge. */ -typedef struct _StBorderImage StBorderImage; -typedef struct _StBorderImageClass StBorderImageClass; #define ST_TYPE_BORDER_IMAGE (st_border_image_get_type ()) -#define ST_BORDER_IMAGE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ST_TYPE_BORDER_IMAGE, StBorderImage)) -#define ST_BORDER_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_BORDER_IMAGE, StBorderImageClass)) -#define ST_IS_BORDER_IMAGE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ST_TYPE_BORDER_IMAGE)) -#define ST_IS_BORDER_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_BORDER_IMAGE)) -#define ST_BORDER_IMAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_BORDER_IMAGE, StBorderImageClass)) - -GType st_border_image_get_type (void) G_GNUC_CONST; +G_DECLARE_FINAL_TYPE (StBorderImage, st_border_image, ST, BORDER_IMAGE, GObject) StBorderImage *st_border_image_new (GFile *file, int border_top, diff --git a/src/st/st-box-layout-child.h b/src/st/st-box-layout-child.h index 6ff463a5b..8935d1a08 100644 --- a/src/st/st-box-layout-child.h +++ b/src/st/st-box-layout-child.h @@ -27,29 +27,9 @@ G_BEGIN_DECLS #define ST_TYPE_BOX_LAYOUT_CHILD st_box_layout_child_get_type() - -#define ST_BOX_LAYOUT_CHILD(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - ST_TYPE_BOX_LAYOUT_CHILD, StBoxLayoutChild)) - -#define ST_BOX_LAYOUT_CHILD_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - ST_TYPE_BOX_LAYOUT_CHILD, StBoxLayoutChildClass)) - -#define ST_IS_BOX_LAYOUT_CHILD(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - ST_TYPE_BOX_LAYOUT_CHILD)) - -#define ST_IS_BOX_LAYOUT_CHILD_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - ST_TYPE_BOX_LAYOUT_CHILD)) - -#define ST_BOX_LAYOUT_CHILD_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - ST_TYPE_BOX_LAYOUT_CHILD, StBoxLayoutChildClass)) +G_DECLARE_FINAL_TYPE (StBoxLayoutChild, st_box_layout_child, ST, BOX_LAYOUT_CHILD, ClutterChildMeta) typedef struct _StBoxLayoutChild StBoxLayoutChild; -typedef struct _StBoxLayoutChildClass StBoxLayoutChildClass; typedef struct _StBoxLayoutChildPrivate StBoxLayoutChildPrivate; /** @@ -67,13 +47,6 @@ struct _StBoxLayoutChild gboolean y_fill_set; }; -struct _StBoxLayoutChildClass -{ - ClutterChildMetaClass parent_class; -}; - -GType st_box_layout_child_get_type (void); - G_END_DECLS #endif /* _ST_BOX_LAYOUT_CHILD_H */ diff --git a/src/st/st-box-layout.h b/src/st/st-box-layout.h index ff4a1f807..3e127b942 100644 --- a/src/st/st-box-layout.h +++ b/src/st/st-box-layout.h @@ -30,29 +30,9 @@ G_BEGIN_DECLS #define ST_TYPE_BOX_LAYOUT st_box_layout_get_type() - -#define ST_BOX_LAYOUT(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - ST_TYPE_BOX_LAYOUT, StBoxLayout)) - -#define ST_BOX_LAYOUT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - ST_TYPE_BOX_LAYOUT, StBoxLayoutClass)) - -#define ST_IS_BOX_LAYOUT(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - ST_TYPE_BOX_LAYOUT)) - -#define ST_IS_BOX_LAYOUT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - ST_TYPE_BOX_LAYOUT)) - -#define ST_BOX_LAYOUT_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - ST_TYPE_BOX_LAYOUT, StBoxLayoutClass)) +G_DECLARE_FINAL_TYPE (StBoxLayout, st_box_layout, ST, BOX_LAYOUT, StWidget) typedef struct _StBoxLayout StBoxLayout; -typedef struct _StBoxLayoutClass StBoxLayoutClass; typedef struct _StBoxLayoutPrivate StBoxLayoutPrivate; /** @@ -69,13 +49,6 @@ struct _StBoxLayout StBoxLayoutPrivate *priv; }; -struct _StBoxLayoutClass -{ - StWidgetClass parent_class; -}; - -GType st_box_layout_get_type (void); - StWidget *st_box_layout_new (void); void st_box_layout_set_vertical (StBoxLayout *box, diff --git a/src/st/st-button.c b/src/st/st-button.c index b3886c74c..38fe20759 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -64,6 +64,8 @@ enum LAST_SIGNAL }; +typedef struct _StButtonPrivate StButtonPrivate; + struct _StButtonPrivate { gchar *text; @@ -105,7 +107,7 @@ static void st_button_style_changed (StWidget *widget) { StButton *button = ST_BUTTON (widget); - StButtonPrivate *priv = button->priv; + StButtonPrivate *priv = st_button_get_instance_private (button); StButtonClass *button_class = ST_BUTTON_GET_CLASS (button); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (button)); double spacing; @@ -132,12 +134,14 @@ st_button_press (StButton *button, StButtonMask mask, ClutterEventSequence *sequence) { - if (button->priv->pressed == 0 || sequence) + StButtonPrivate *priv = st_button_get_instance_private (button); + + if (priv->pressed == 0 || sequence) st_widget_add_style_pseudo_class (ST_WIDGET (button), "active"); - button->priv->pressed |= mask; - button->priv->press_sequence = sequence; - button->priv->device = device; + priv->pressed |= mask; + priv->press_sequence = sequence; + priv->device = device; } static void @@ -147,25 +151,27 @@ st_button_release (StButton *button, int clicked_button, ClutterEventSequence *sequence) { - if ((device && button->priv->device != device) || - (sequence && button->priv->press_sequence != sequence)) + StButtonPrivate *priv = st_button_get_instance_private (button); + + if ((device && priv->device != device) || + (sequence && priv->press_sequence != sequence)) return; else if (!sequence) { - button->priv->pressed &= ~mask; + priv->pressed &= ~mask; - if (button->priv->pressed != 0) + if (priv->pressed != 0) return; } - button->priv->press_sequence = NULL; - button->priv->device = NULL; + priv->press_sequence = NULL; + priv->device = NULL; st_widget_remove_style_pseudo_class (ST_WIDGET (button), "active"); if (clicked_button || sequence) { - if (button->priv->is_toggle) - st_button_set_checked (button, !button->priv->is_checked); + if (priv->is_toggle) + st_button_set_checked (button, !priv->is_checked); g_signal_emit (button, button_signals[CLICKED], 0, clicked_button); } @@ -176,18 +182,19 @@ st_button_button_press (ClutterActor *actor, ClutterButtonEvent *event) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); StButtonMask mask = ST_BUTTON_MASK_FROM_BUTTON (event->button); ClutterInputDevice *device = clutter_event_get_device ((ClutterEvent*) event); - if (button->priv->press_sequence) + if (priv->press_sequence) return CLUTTER_EVENT_PROPAGATE; - if (button->priv->button_mask & mask) + if (priv->button_mask & mask) { - if (button->priv->grabbed == 0) + if (priv->grabbed == 0) clutter_grab_pointer (actor); - button->priv->grabbed |= mask; + priv->grabbed |= mask; st_button_press (button, device, mask, NULL); return TRUE; @@ -201,18 +208,19 @@ st_button_button_release (ClutterActor *actor, ClutterButtonEvent *event) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); StButtonMask mask = ST_BUTTON_MASK_FROM_BUTTON (event->button); ClutterInputDevice *device = clutter_event_get_device ((ClutterEvent*) event); - if (button->priv->button_mask & mask) + if (priv->button_mask & mask) { gboolean is_click; - is_click = button->priv->grabbed && clutter_actor_contains (actor, event->source); + is_click = priv->grabbed && clutter_actor_contains (actor, event->source); st_button_release (button, device, mask, is_click ? event->button : 0, NULL); - button->priv->grabbed &= ~mask; - if (button->priv->grabbed == 0) + priv->grabbed &= ~mask; + if (priv->grabbed == 0) clutter_ungrab_pointer (); return TRUE; @@ -226,25 +234,26 @@ st_button_touch_event (ClutterActor *actor, ClutterTouchEvent *event) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); StButtonMask mask = ST_BUTTON_MASK_FROM_BUTTON (1); ClutterEventSequence *sequence; ClutterInputDevice *device; - if (button->priv->pressed != 0) + if (priv->pressed != 0) return CLUTTER_EVENT_PROPAGATE; device = clutter_event_get_device ((ClutterEvent*) event); sequence = clutter_event_get_event_sequence ((ClutterEvent*) event); - if (event->type == CLUTTER_TOUCH_BEGIN && !button->priv->press_sequence) + if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence) { clutter_input_device_sequence_grab (device, sequence, actor); st_button_press (button, device, 0, sequence); return CLUTTER_EVENT_STOP; } else if (event->type == CLUTTER_TOUCH_END && - button->priv->device == device && - button->priv->press_sequence == sequence) + priv->device == device && + priv->press_sequence == sequence) { st_button_release (button, device, mask, 0, sequence); clutter_input_device_sequence_ungrab (device, sequence); @@ -259,8 +268,9 @@ st_button_key_press (ClutterActor *actor, ClutterKeyEvent *event) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); - if (button->priv->button_mask & ST_BUTTON_ONE) + if (priv->button_mask & ST_BUTTON_ONE) { if (event->keyval == CLUTTER_KEY_space || event->keyval == CLUTTER_KEY_Return || @@ -280,8 +290,9 @@ st_button_key_release (ClutterActor *actor, ClutterKeyEvent *event) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); - if (button->priv->button_mask & ST_BUTTON_ONE) + if (priv->button_mask & ST_BUTTON_ONE) { if (event->keyval == CLUTTER_KEY_space || event->keyval == CLUTTER_KEY_Return || @@ -290,7 +301,7 @@ st_button_key_release (ClutterActor *actor, { gboolean is_click; - is_click = (button->priv->pressed & ST_BUTTON_ONE); + is_click = (priv->pressed & ST_BUTTON_ONE); st_button_release (button, NULL, ST_BUTTON_ONE, is_click ? 1 : 0, NULL); return TRUE; } @@ -303,10 +314,11 @@ static void st_button_key_focus_out (ClutterActor *actor) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); /* If we lose focus between a key press and release, undo the press */ - if ((button->priv->pressed & ST_BUTTON_ONE) && - !(button->priv->grabbed & ST_BUTTON_ONE)) + if ((priv->pressed & ST_BUTTON_ONE) && + !(priv->grabbed & ST_BUTTON_ONE)) st_button_release (button, NULL, ST_BUTTON_ONE, 0, NULL); CLUTTER_ACTOR_CLASS (st_button_parent_class)->key_focus_out (actor); @@ -317,18 +329,19 @@ st_button_enter (ClutterActor *actor, ClutterCrossingEvent *event) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); gboolean ret; ret = CLUTTER_ACTOR_CLASS (st_button_parent_class)->enter_event (actor, event); - if (button->priv->grabbed) + if (priv->grabbed) { if (st_widget_get_hover (ST_WIDGET (button))) - st_button_press (button, button->priv->device, - button->priv->grabbed, NULL); + st_button_press (button, priv->device, + priv->grabbed, NULL); else - st_button_release (button, button->priv->device, - button->priv->grabbed, 0, NULL); + st_button_release (button, priv->device, + priv->grabbed, 0, NULL); } return ret; @@ -339,18 +352,19 @@ st_button_leave (ClutterActor *actor, ClutterCrossingEvent *event) { StButton *button = ST_BUTTON (actor); + StButtonPrivate *priv = st_button_get_instance_private (button); gboolean ret; ret = CLUTTER_ACTOR_CLASS (st_button_parent_class)->leave_event (actor, event); - if (button->priv->grabbed) + if (priv->grabbed) { if (st_widget_get_hover (ST_WIDGET (button))) - st_button_press (button, button->priv->device, - button->priv->grabbed, NULL); + st_button_press (button, priv->device, + priv->grabbed, NULL); else - st_button_release (button, button->priv->device, - button->priv->grabbed, 0, NULL); + st_button_release (button, priv->device, + priv->grabbed, 0, NULL); } return ret; @@ -392,7 +406,7 @@ st_button_get_property (GObject *gobject, GValue *value, GParamSpec *pspec) { - StButtonPrivate *priv = ST_BUTTON (gobject)->priv; + StButtonPrivate *priv = st_button_get_instance_private (ST_BUTTON (gobject)); switch (prop_id) { @@ -422,7 +436,7 @@ st_button_get_property (GObject *gobject, static void st_button_finalize (GObject *gobject) { - StButtonPrivate *priv = ST_BUTTON (gobject)->priv; + StButtonPrivate *priv = st_button_get_instance_private (ST_BUTTON (gobject)); g_free (priv->text); @@ -507,9 +521,10 @@ st_button_class_init (StButtonClass *klass) static void st_button_init (StButton *button) { - button->priv = st_button_get_instance_private (button); - button->priv->spacing = 6; - button->priv->button_mask = ST_BUTTON_ONE; + StButtonPrivate *priv = st_button_get_instance_private (button); + + priv->spacing = 6; + priv->button_mask = ST_BUTTON_ONE; clutter_actor_set_reactive (CLUTTER_ACTOR (button), TRUE); st_widget_set_track_hover (ST_WIDGET (button), TRUE); @@ -555,7 +570,7 @@ st_button_get_label (StButton *button) { g_return_val_if_fail (ST_IS_BUTTON (button), NULL); - return button->priv->text; + return ((StButtonPrivate *)st_button_get_instance_private (button))->text; } /** @@ -574,7 +589,7 @@ st_button_set_label (StButton *button, g_return_if_fail (ST_IS_BUTTON (button)); - priv = button->priv; + priv = st_button_get_instance_private (button); g_free (priv->text); @@ -621,7 +636,7 @@ st_button_get_button_mask (StButton *button) { g_return_val_if_fail (ST_IS_BUTTON (button), 0); - return button->priv->button_mask; + return ((StButtonPrivate *)st_button_get_instance_private (button))->button_mask; } /** @@ -635,9 +650,12 @@ void st_button_set_button_mask (StButton *button, StButtonMask mask) { + StButtonPrivate *priv; + g_return_if_fail (ST_IS_BUTTON (button)); - button->priv->button_mask = mask; + priv = st_button_get_instance_private (button); + priv->button_mask = mask; g_object_notify (G_OBJECT (button), "button-mask"); } @@ -655,7 +673,7 @@ st_button_get_toggle_mode (StButton *button) { g_return_val_if_fail (ST_IS_BUTTON (button), FALSE); - return button->priv->is_toggle; + return ((StButtonPrivate *)st_button_get_instance_private (button))->is_toggle; } /** @@ -670,9 +688,12 @@ void st_button_set_toggle_mode (StButton *button, gboolean toggle) { + StButtonPrivate *priv; + g_return_if_fail (ST_IS_BUTTON (button)); - button->priv->is_toggle = toggle; + priv = st_button_get_instance_private (button); + priv->is_toggle = toggle; g_object_notify (G_OBJECT (button), "toggle-mode"); } @@ -690,7 +711,7 @@ st_button_get_checked (StButton *button) { g_return_val_if_fail (ST_IS_BUTTON (button), FALSE); - return button->priv->is_checked; + return ((StButtonPrivate *)st_button_get_instance_private (button))->is_checked; } /** @@ -705,11 +726,14 @@ void st_button_set_checked (StButton *button, gboolean checked) { + StButtonPrivate *priv; + g_return_if_fail (ST_IS_BUTTON (button)); - if (button->priv->is_checked != checked) + priv = st_button_get_instance_private (button); + if (priv->is_checked != checked) { - button->priv->is_checked = checked; + priv->is_checked = checked; if (checked) st_widget_add_style_pseudo_class (ST_WIDGET (button), "checked"); @@ -736,25 +760,30 @@ st_button_set_checked (StButton *button, void st_button_fake_release (StButton *button) { - if (button->priv->pressed) - st_button_release (button, button->priv->device, - button->priv->pressed, 0, NULL); + StButtonPrivate *priv; + + g_return_if_fail (ST_IS_BUTTON (button)); + + priv = st_button_get_instance_private (button); + if (priv->pressed) + st_button_release (button, priv->device, + priv->pressed, 0, NULL); - if (button->priv->grabbed) + if (priv->grabbed) { - button->priv->grabbed = 0; + priv->grabbed = 0; clutter_ungrab_pointer (); } - if (button->priv->device && - button->priv->press_sequence) + if (priv->device && + priv->press_sequence) { - clutter_input_device_sequence_ungrab (button->priv->device, - button->priv->press_sequence); - button->priv->press_sequence = NULL; + clutter_input_device_sequence_ungrab (priv->device, + priv->press_sequence); + priv->press_sequence = NULL; } - button->priv->device = NULL; + priv->device = NULL; } /******************************************************************************/ @@ -817,7 +846,7 @@ st_button_accessible_get_name (AtkObject *obj) if (name != NULL) return name; - return button->priv->text; + return st_button_get_label (button); } static void @@ -847,7 +876,7 @@ static void st_button_accessible_compute_role (AtkObject *accessible, StButton *button) { - atk_object_set_role (accessible, button->priv->is_toggle + atk_object_set_role (accessible, st_button_get_toggle_mode (button) ? ATK_ROLE_TOGGLE_BUTTON : ATK_ROLE_PUSH_BUTTON); } diff --git a/src/st/st-button.h b/src/st/st-button.h index 23ae81bd1..5ee45896e 100644 --- a/src/st/st-button.h +++ b/src/st/st-button.h @@ -29,31 +29,8 @@ G_BEGIN_DECLS #include -#define ST_TYPE_BUTTON (st_button_get_type ()) -#define ST_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_BUTTON, StButton)) -#define ST_IS_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_BUTTON)) -#define ST_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_BUTTON, StButtonClass)) -#define ST_IS_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_BUTTON)) -#define ST_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_BUTTON, StButtonClass)) - -typedef struct _StButton StButton; -typedef struct _StButtonPrivate StButtonPrivate; -typedef struct _StButtonClass StButtonClass; - -/** - * StButton: - * - * The contents of this structure is private and should only be accessed using - * the provided API. - */ - -struct _StButton -{ - /*< private >*/ - StBin parent_instance; - - StButtonPrivate *priv; -}; +#define ST_TYPE_BUTTON (st_button_get_type ()) +G_DECLARE_DERIVABLE_TYPE (StButton, st_button, ST, BUTTON, StBin) struct _StButtonClass { @@ -66,8 +43,6 @@ struct _StButtonClass void (* clicked) (StButton *button); }; -GType st_button_get_type (void) G_GNUC_CONST; - StWidget *st_button_new (void); StWidget *st_button_new_with_label (const gchar *text); const gchar *st_button_get_label (StButton *button); diff --git a/src/st/st-clipboard.h b/src/st/st-clipboard.h index ca45499e1..9ea412e3b 100644 --- a/src/st/st-clipboard.h +++ b/src/st/st-clipboard.h @@ -29,29 +29,9 @@ G_BEGIN_DECLS #define ST_TYPE_CLIPBOARD st_clipboard_get_type() - -#define ST_CLIPBOARD(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - ST_TYPE_CLIPBOARD, StClipboard)) - -#define ST_CLIPBOARD_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - ST_TYPE_CLIPBOARD, StClipboardClass)) - -#define ST_IS_CLIPBOARD(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - ST_TYPE_CLIPBOARD)) - -#define ST_IS_CLIPBOARD_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - ST_TYPE_CLIPBOARD)) - -#define ST_CLIPBOARD_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - ST_TYPE_CLIPBOARD, StClipboardClass)) +G_DECLARE_FINAL_TYPE (StClipboard, st_clipboard, ST, CLIPBOARD, GObject) typedef struct _StClipboard StClipboard; -typedef struct _StClipboardClass StClipboardClass; typedef struct _StClipboardPrivate StClipboardPrivate; /** @@ -67,11 +47,6 @@ struct _StClipboard StClipboardPrivate *priv; }; -struct _StClipboardClass -{ - GObjectClass parent_class; -}; - typedef enum { ST_CLIPBOARD_TYPE_PRIMARY, ST_CLIPBOARD_TYPE_CLIPBOARD @@ -89,8 +64,6 @@ typedef void (*StClipboardCallbackFunc) (StClipboard *clipboard, const gchar *text, gpointer user_data); -GType st_clipboard_get_type (void); - StClipboard* st_clipboard_get_default (void); void st_clipboard_get_text (StClipboard *clipboard, diff --git a/src/st/st-drawing-area.c b/src/st/st-drawing-area.c index ea9942a62..28e3c2646 100644 --- a/src/st/st-drawing-area.c +++ b/src/st/st-drawing-area.c @@ -36,6 +36,7 @@ #include +typedef struct _StDrawingAreaPrivate StDrawingAreaPrivate; struct _StDrawingAreaPrivate { CoglTexture *texture; CoglPipeline *pipeline; @@ -59,7 +60,7 @@ static void st_drawing_area_dispose (GObject *object) { StDrawingArea *area = ST_DRAWING_AREA (object); - StDrawingAreaPrivate *priv = area->priv; + StDrawingAreaPrivate *priv = st_drawing_area_get_instance_private (area); g_clear_pointer (&priv->pipeline, cogl_object_unref); g_clear_pointer (&priv->texture, cogl_object_unref); @@ -71,7 +72,7 @@ static void st_drawing_area_paint (ClutterActor *self) { StDrawingArea *area = ST_DRAWING_AREA (self); - StDrawingAreaPrivate *priv = area->priv; + StDrawingAreaPrivate *priv = st_drawing_area_get_instance_private (area); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self)); ClutterActorBox allocation_box; ClutterActorBox content_box; @@ -157,7 +158,7 @@ static void st_drawing_area_style_changed (StWidget *self) { StDrawingArea *area = ST_DRAWING_AREA (self); - StDrawingAreaPrivate *priv = area->priv; + StDrawingAreaPrivate *priv = st_drawing_area_get_instance_private (area); (ST_WIDGET_CLASS (st_drawing_area_parent_class))->style_changed (self); @@ -187,8 +188,8 @@ st_drawing_area_class_init (StDrawingAreaClass *klass) static void st_drawing_area_init (StDrawingArea *area) { - area->priv = st_drawing_area_get_instance_private (area); - area->priv->texture = NULL; + StDrawingAreaPrivate *priv = st_drawing_area_get_instance_private (area); + priv->texture = NULL; } /** @@ -208,7 +209,7 @@ st_drawing_area_queue_repaint (StDrawingArea *area) g_return_if_fail (ST_IS_DRAWING_AREA (area)); - priv = area->priv; + priv = st_drawing_area_get_instance_private (area); priv->needs_repaint = TRUE; clutter_actor_queue_redraw (CLUTTER_ACTOR (area)); @@ -226,10 +227,14 @@ st_drawing_area_queue_repaint (StDrawingArea *area) cairo_t * st_drawing_area_get_context (StDrawingArea *area) { + StDrawingAreaPrivate *priv; + g_return_val_if_fail (ST_IS_DRAWING_AREA (area), NULL); - g_return_val_if_fail (area->priv->in_repaint, NULL); - return area->priv->context; + priv = st_drawing_area_get_instance_private (area); + g_return_val_if_fail (priv->in_repaint, NULL); + + return priv->context; } /** @@ -250,9 +255,9 @@ st_drawing_area_get_surface_size (StDrawingArea *area, StDrawingAreaPrivate *priv; g_return_if_fail (ST_IS_DRAWING_AREA (area)); - g_return_if_fail (area->priv->in_repaint); - priv = area->priv; + priv = st_drawing_area_get_instance_private (area); + g_return_if_fail (priv->in_repaint); if (width) *width = cogl_texture_get_width (priv->texture); diff --git a/src/st/st-drawing-area.h b/src/st/st-drawing-area.h index fddd7dfa5..e09f9c5b2 100644 --- a/src/st/st-drawing-area.h +++ b/src/st/st-drawing-area.h @@ -24,24 +24,9 @@ #include "st-widget.h" #include -#define ST_TYPE_DRAWING_AREA (st_drawing_area_get_type ()) -#define ST_DRAWING_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_DRAWING_AREA, StDrawingArea)) -#define ST_DRAWING_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_DRAWING_AREA, StDrawingAreaClass)) -#define ST_IS_DRAWING_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_DRAWING_AREA)) -#define ST_IS_DRAWING_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_DRAWING_AREA)) -#define ST_DRAWING_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_DRAWING_AREA, StDrawingAreaClass)) - -typedef struct _StDrawingArea StDrawingArea; -typedef struct _StDrawingAreaClass StDrawingAreaClass; - -typedef struct _StDrawingAreaPrivate StDrawingAreaPrivate; - -struct _StDrawingArea -{ - StWidget parent; - - StDrawingAreaPrivate *priv; -}; +#define ST_TYPE_DRAWING_AREA (st_drawing_area_get_type ()) +G_DECLARE_DERIVABLE_TYPE (StDrawingArea, st_drawing_area, + ST, DRAWING_AREA, StWidget) struct _StDrawingAreaClass { @@ -50,8 +35,6 @@ struct _StDrawingAreaClass void (*repaint) (StDrawingArea *area); }; -GType st_drawing_area_get_type (void) G_GNUC_CONST; - void st_drawing_area_queue_repaint (StDrawingArea *area); cairo_t *st_drawing_area_get_context (StDrawingArea *area); void st_drawing_area_get_surface_size (StDrawingArea *area, diff --git a/src/st/st-entry.c b/src/st/st-entry.c index 8752538ea..c1a648d35 100644 --- a/src/st/st-entry.c +++ b/src/st/st-entry.c @@ -87,9 +87,10 @@ enum LAST_SIGNAL }; -#define ST_ENTRY_PRIV(x) ((StEntry *) x)->priv +#define ST_ENTRY_PRIV(x) st_entry_get_instance_private ((StEntry *) x) +typedef struct _StEntryPrivate StEntryPrivate; struct _StEntryPrivate { ClutterActor *entry; @@ -182,7 +183,8 @@ st_entry_get_property (GObject *gobject, static void show_capslock_feedback (StEntry *entry) { - if (entry->priv->secondary_icon == NULL) + StEntryPrivate *priv = ST_ENTRY_PRIV (entry); + if (priv->secondary_icon == NULL) { ClutterActor *icon = g_object_new (ST_TYPE_ICON, "style-class", "capslock-warning", @@ -190,17 +192,18 @@ show_capslock_feedback (StEntry *entry) NULL); st_entry_set_secondary_icon (entry, icon); - entry->priv->capslock_warning_shown = TRUE; + priv->capslock_warning_shown = TRUE; } } static void remove_capslock_feedback (StEntry *entry) { - if (entry->priv->capslock_warning_shown) + StEntryPrivate *priv = ST_ENTRY_PRIV (entry); + if (priv->capslock_warning_shown) { st_entry_set_secondary_icon (entry, NULL); - entry->priv->capslock_warning_shown = FALSE; + priv->capslock_warning_shown = FALSE; } } @@ -209,8 +212,9 @@ keymap_state_changed (GdkKeymap *keymap, gpointer user_data) { StEntry *entry = ST_ENTRY (user_data); + StEntryPrivate *priv = ST_ENTRY_PRIV (entry); - if (clutter_text_get_password_char (CLUTTER_TEXT (entry->priv->entry)) != 0) + if (clutter_text_get_password_char (CLUTTER_TEXT (priv->entry)) != 0) { if (gdk_keymap_get_caps_lock_state (keymap)) show_capslock_feedback (entry); @@ -223,7 +227,7 @@ static void st_entry_dispose (GObject *object) { StEntry *entry = ST_ENTRY (object); - StEntryPrivate *priv = entry->priv; + StEntryPrivate *priv = ST_ENTRY_PRIV (entry); GdkKeymap *keymap; if (priv->entry) @@ -479,7 +483,7 @@ clutter_text_focus_in_cb (ClutterText *text, ClutterActor *actor) { StEntry *entry = ST_ENTRY (actor); - StEntryPrivate *priv = entry->priv; + StEntryPrivate *priv = ST_ENTRY_PRIV (entry); GdkKeymap *keymap; /* remove the hint if visible */ @@ -505,7 +509,7 @@ clutter_text_focus_out_cb (ClutterText *text, ClutterActor *actor) { StEntry *entry = ST_ENTRY (actor); - StEntryPrivate *priv = entry->priv; + StEntryPrivate *priv = ST_ENTRY_PRIV (entry); GdkKeymap *keymap; st_widget_remove_style_pseudo_class (ST_WIDGET (actor), "focus"); @@ -531,8 +535,9 @@ clutter_text_password_char_cb (GObject *object, gpointer user_data) { StEntry *entry = ST_ENTRY (user_data); + StEntryPrivate *priv = ST_ENTRY_PRIV (entry); - if (clutter_text_get_password_char (CLUTTER_TEXT (entry->priv->entry)) == 0) + if (clutter_text_get_password_char (CLUTTER_TEXT (priv->entry)) == 0) remove_capslock_feedback (entry); } @@ -541,7 +546,8 @@ st_entry_clipboard_callback (StClipboard *clipboard, const gchar *text, gpointer data) { - ClutterText *ctext = (ClutterText*)((StEntry *) data)->priv->entry; + StEntryPrivate *priv = ST_ENTRY_PRIV (data); + ClutterText *ctext = (ClutterText*)priv->entry; gint cursor_pos; if (!text) @@ -720,14 +726,15 @@ st_entry_set_cursor (StEntry *entry, { cursor_func (entry, use_ibeam, cursor_func_data); - entry->priv->has_ibeam = use_ibeam; + ((StEntryPrivate *)ST_ENTRY_PRIV (entry))->has_ibeam = use_ibeam; } static gboolean st_entry_enter_event (ClutterActor *actor, ClutterCrossingEvent *event) { - if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL) + StEntryPrivate *priv = ST_ENTRY_PRIV (actor); + if (event->source == priv->entry && event->related != NULL) st_entry_set_cursor (ST_ENTRY (actor), TRUE); return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->enter_event (actor, event); @@ -737,7 +744,8 @@ static gboolean st_entry_leave_event (ClutterActor *actor, ClutterCrossingEvent *event) { - if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL) + StEntryPrivate *priv = ST_ENTRY_PRIV (actor); + if (event->source == priv->entry && event->related != NULL) st_entry_set_cursor (ST_ENTRY (actor), FALSE); return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->leave_event (actor, event); @@ -746,7 +754,8 @@ st_entry_leave_event (ClutterActor *actor, static void st_entry_unmap (ClutterActor *actor) { - if (ST_ENTRY (actor)->priv->has_ibeam) + StEntryPrivate *priv = ST_ENTRY_PRIV (actor); + if (priv->has_ibeam) st_entry_set_cursor (ST_ENTRY (actor), FALSE); CLUTTER_ACTOR_CLASS (st_entry_parent_class)->unmap (actor); @@ -855,7 +864,7 @@ st_entry_init (StEntry *entry) { StEntryPrivate *priv; - priv = entry->priv = st_entry_get_instance_private (entry); + priv = st_entry_get_instance_private (entry); priv->entry = g_object_new (ST_TYPE_IM_TEXT, "line-alignment", PANGO_ALIGN_LEFT, @@ -917,12 +926,15 @@ st_entry_new (const gchar *text) const gchar * st_entry_get_text (StEntry *entry) { + StEntryPrivate *priv; + g_return_val_if_fail (ST_IS_ENTRY (entry), NULL); - if (entry->priv->hint_visible) + priv = st_entry_get_instance_private (entry); + if (priv->hint_visible) return ""; else - return clutter_text_get_text (CLUTTER_TEXT (entry->priv->entry)); + return clutter_text_get_text (CLUTTER_TEXT (priv->entry)); } /** @@ -940,7 +952,7 @@ st_entry_set_text (StEntry *entry, g_return_if_fail (ST_IS_ENTRY (entry)); - priv = entry->priv; + priv = st_entry_get_instance_private (entry); /* set a hint if we are blanking the entry */ if (priv->hint @@ -977,7 +989,7 @@ st_entry_get_clutter_text (StEntry *entry) { g_return_val_if_fail (ST_ENTRY (entry), NULL); - return entry->priv->entry; + return ((StEntryPrivate *)ST_ENTRY_PRIV (entry))->entry; } /** @@ -997,7 +1009,7 @@ st_entry_set_hint_text (StEntry *entry, g_return_if_fail (ST_IS_ENTRY (entry)); - priv = entry->priv; + priv = st_entry_get_instance_private (entry); g_free (priv->hint); @@ -1027,7 +1039,7 @@ st_entry_get_hint_text (StEntry *entry) { g_return_val_if_fail (ST_IS_ENTRY (entry), NULL); - return entry->priv->hint; + return ((StEntryPrivate *)ST_ENTRY_PRIV (entry))->hint; } /** @@ -1043,11 +1055,13 @@ void st_entry_set_input_purpose (StEntry *entry, GtkInputPurpose purpose) { + StEntryPrivate *priv; StIMText *imtext; g_return_if_fail (ST_IS_ENTRY (entry)); - imtext = ST_IM_TEXT (entry->priv->entry); + priv = st_entry_get_instance_private (entry); + imtext = ST_IM_TEXT (priv->entry); if (st_im_text_get_input_purpose (imtext) != purpose) { @@ -1066,9 +1080,12 @@ st_entry_set_input_purpose (StEntry *entry, GtkInputPurpose st_entry_get_input_purpose (StEntry *entry) { + StEntryPrivate *priv; + g_return_val_if_fail (ST_IS_ENTRY (entry), GTK_INPUT_PURPOSE_FREE_FORM); - return st_im_text_get_input_purpose (ST_IM_TEXT (entry->priv->entry)); + priv = st_entry_get_instance_private (entry); + return st_im_text_get_input_purpose (ST_IM_TEXT (priv->entry)); } /** @@ -1083,11 +1100,13 @@ void st_entry_set_input_hints (StEntry *entry, GtkInputHints hints) { + StEntryPrivate *priv; StIMText *imtext; g_return_if_fail (ST_IS_ENTRY (entry)); - imtext = ST_IM_TEXT (entry->priv->entry); + priv = st_entry_get_instance_private (entry); + imtext = ST_IM_TEXT (priv->entry); if (st_im_text_get_input_hints (imtext) != hints) { @@ -1106,9 +1125,12 @@ st_entry_set_input_hints (StEntry *entry, GtkInputHints st_entry_get_input_hints (StEntry *entry) { + StEntryPrivate *priv; + g_return_val_if_fail (ST_IS_ENTRY (entry), GTK_INPUT_HINT_NONE); - return st_im_text_get_input_hints (ST_IM_TEXT (entry->priv->entry)); + priv = st_entry_get_instance_private (entry); + return st_im_text_get_input_hints (ST_IM_TEXT (priv->entry)); } static gboolean @@ -1116,7 +1138,7 @@ _st_entry_icon_press_cb (ClutterActor *actor, ClutterButtonEvent *event, StEntry *entry) { - StEntryPrivate *priv = entry->priv; + StEntryPrivate *priv = ST_ENTRY_PRIV (actor); if (actor == priv->primary_icon) g_signal_emit (entry, entry_signals[PRIMARY_ICON_CLICKED], 0); @@ -1168,7 +1190,7 @@ st_entry_set_primary_icon (StEntry *entry, g_return_if_fail (ST_IS_ENTRY (entry)); - priv = entry->priv; + priv = st_entry_get_instance_private (entry); _st_entry_set_icon (entry, &priv->primary_icon, icon); } @@ -1188,7 +1210,7 @@ st_entry_set_secondary_icon (StEntry *entry, g_return_if_fail (ST_IS_ENTRY (entry)); - priv = entry->priv; + priv = st_entry_get_instance_private (entry); _st_entry_set_icon (entry, &priv->secondary_icon, icon); } @@ -1239,6 +1261,7 @@ static gint st_entry_accessible_get_n_children (AtkObject *obj) { StEntry *entry = NULL; + StEntryPrivate *priv; g_return_val_if_fail (ST_IS_ENTRY_ACCESSIBLE (obj), 0); @@ -1247,7 +1270,8 @@ st_entry_accessible_get_n_children (AtkObject *obj) if (entry == NULL) return 0; - if (entry->priv->entry == NULL) + priv = st_entry_get_instance_private (entry); + if (priv->entry == NULL) return 0; else return 1; @@ -1258,6 +1282,7 @@ st_entry_accessible_ref_child (AtkObject *obj, gint i) { StEntry *entry = NULL; + StEntryPrivate *priv; AtkObject *result = NULL; g_return_val_if_fail (ST_IS_ENTRY_ACCESSIBLE (obj), NULL); @@ -1268,10 +1293,11 @@ st_entry_accessible_ref_child (AtkObject *obj, if (entry == NULL) return NULL; - if (entry->priv->entry == NULL) + priv = st_entry_get_instance_private (entry); + if (priv->entry == NULL) return NULL; - result = clutter_actor_get_accessible (entry->priv->entry); + result = clutter_actor_get_accessible (priv->entry); g_object_ref (result); return result; diff --git a/src/st/st-entry.h b/src/st/st-entry.h index bc79db4ec..071403b8f 100644 --- a/src/st/st-entry.h +++ b/src/st/st-entry.h @@ -28,30 +28,8 @@ G_BEGIN_DECLS #include -#define ST_TYPE_ENTRY (st_entry_get_type ()) -#define ST_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_ENTRY, StEntry)) -#define ST_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_ENTRY)) -#define ST_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_ENTRY, StEntryClass)) -#define ST_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_ENTRY)) -#define ST_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_ENTRY, StEntryClass)) - -typedef struct _StEntry StEntry; -typedef struct _StEntryPrivate StEntryPrivate; -typedef struct _StEntryClass StEntryClass; - -/** - * StEntry: - * - * The contents of this structure is private and should only be accessed using - * the provided API. - */ -struct _StEntry -{ - /*< private >*/ - StWidget parent_instance; - - StEntryPrivate *priv; -}; +#define ST_TYPE_ENTRY (st_entry_get_type ()) +G_DECLARE_DERIVABLE_TYPE (StEntry, st_entry, ST, ENTRY, StWidget) struct _StEntryClass { @@ -62,8 +40,6 @@ struct _StEntryClass void (*secondary_icon_clicked) (StEntry *entry); }; -GType st_entry_get_type (void) G_GNUC_CONST; - StWidget *st_entry_new (const gchar *text); const gchar *st_entry_get_text (StEntry *entry); void st_entry_set_text (StEntry *entry, diff --git a/src/st/st-focus-manager.h b/src/st/st-focus-manager.h index d4b9551ba..ba8442b56 100644 --- a/src/st/st-focus-manager.h +++ b/src/st/st-focus-manager.h @@ -31,15 +31,10 @@ G_BEGIN_DECLS #define ST_TYPE_FOCUS_MANAGER (st_focus_manager_get_type ()) -#define ST_FOCUS_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_FOCUS_MANAGER, StFocusManager)) -#define ST_IS_FOCUS_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_FOCUS_MANAGER)) -#define ST_FOCUS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_FOCUS_MANAGER, StFocusManagerClass)) -#define ST_IS_FOCUS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_FOCUS_MANAGER)) -#define ST_FOCUS_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_FOCUS_MANAGER, StFocusManagerClass)) +G_DECLARE_FINAL_TYPE (StFocusManager, st_focus_manager, ST, FOCUS_MANAGER, GObject) typedef struct _StFocusManager StFocusManager; typedef struct _StFocusManagerPrivate StFocusManagerPrivate; -typedef struct _StFocusManagerClass StFocusManagerClass; /** * StFocusManager: @@ -54,19 +49,6 @@ struct _StFocusManager StFocusManagerPrivate *priv; }; -/** - * StFocusManagerClass: - * - * The #StFocusManagerClass struct contains only private data - */ -struct _StFocusManagerClass -{ - /*< private >*/ - GObjectClass parent_class; -}; - -GType st_focus_manager_get_type (void) G_GNUC_CONST; - StFocusManager *st_focus_manager_get_for_stage (ClutterStage *stage); void st_focus_manager_add_group (StFocusManager *manager, diff --git a/src/st/st-icon.h b/src/st/st-icon.h index 212597909..23083b678 100644 --- a/src/st/st-icon.h +++ b/src/st/st-icon.h @@ -37,21 +37,7 @@ G_BEGIN_DECLS #define ST_TYPE_ICON st_icon_get_type() - -#define ST_ICON(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_ICON, StIcon)) - -#define ST_ICON_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_ICON, StIconClass)) - -#define ST_IS_ICON(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_ICON)) - -#define ST_IS_ICON_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_ICON)) - -#define ST_ICON_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_ICON, StIconClass)) +G_DECLARE_FINAL_TYPE (StIcon, st_icon, ST, ICON, StWidget) typedef struct _StIconPrivate StIconPrivate; @@ -61,25 +47,12 @@ typedef struct _StIconPrivate StIconPrivate; * The contents of this structure are private and should only be accessed * through the public API. */ -typedef struct { +struct _StIcon { /*< private >*/ StWidget parent; StIconPrivate *priv; -} StIcon; - -typedef struct { - StWidgetClass parent_class; - - /* padding for future expansion */ - void (*_padding_0) (void); - void (*_padding_1) (void); - void (*_padding_2) (void); - void (*_padding_3) (void); - void (*_padding_4) (void); -} StIconClass; - -GType st_icon_get_type (void); +}; ClutterActor* st_icon_new (void); diff --git a/src/st/st-im-text.h b/src/st/st-im-text.h index 4c96248b8..a7cc4900a 100644 --- a/src/st/st-im-text.h +++ b/src/st/st-im-text.h @@ -36,15 +36,10 @@ G_BEGIN_DECLS #include #define ST_TYPE_IM_TEXT (st_im_text_get_type ()) -#define ST_IM_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_IM_TEXT, StIMText)) -#define ST_IS_IM_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_IM_TEXT)) -#define ST_IM_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_IM_TEXT, StIMTextClass)) -#define ST_IS_IM_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_IM_TEXT)) -#define ST_IM_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_IM_TEXT, StIMTextClass)) +G_DECLARE_FINAL_TYPE (StIMText, st_im_text, ST, IM_TEXT, ClutterText) typedef struct _StIMText StIMText; typedef struct _StIMTextPrivate StIMTextPrivate; -typedef struct _StIMTextClass StIMTextClass; struct _StIMText { @@ -53,13 +48,6 @@ struct _StIMText StIMTextPrivate *priv; }; -struct _StIMTextClass -{ - ClutterTextClass parent_class; -}; - -GType st_im_text_get_type (void) G_GNUC_CONST; - ClutterActor *st_im_text_new (const gchar *text); void st_im_text_set_input_purpose (StIMText *imtext, GtkInputPurpose purpose); diff --git a/src/st/st-label.h b/src/st/st-label.h index 65164ce29..456ad3144 100644 --- a/src/st/st-label.h +++ b/src/st/st-label.h @@ -29,15 +29,9 @@ G_BEGIN_DECLS #include #define ST_TYPE_LABEL (st_label_get_type ()) -#define ST_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_LABEL, StLabel)) -#define ST_IS_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_LABEL)) -#define ST_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_LABEL, StLabelClass)) -#define ST_IS_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_LABEL)) -#define ST_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_LABEL, StLabelClass)) +G_DECLARE_FINAL_TYPE (StLabel, st_label, ST, LABEL, StWidget) -typedef struct _StLabel StLabel; typedef struct _StLabelPrivate StLabelPrivate; -typedef struct _StLabelClass StLabelClass; /** * StLabel: @@ -53,13 +47,6 @@ struct _StLabel StLabelPrivate *priv; }; -struct _StLabelClass -{ - StWidgetClass parent_class; -}; - -GType st_label_get_type (void) G_GNUC_CONST; - StWidget * st_label_new (const gchar *text); const gchar * st_label_get_text (StLabel *label); void st_label_set_text (StLabel *label, diff --git a/src/st/st-scroll-bar.c b/src/st/st-scroll-bar.c index 9e4fdd2db..561bb4b7d 100644 --- a/src/st/st-scroll-bar.c +++ b/src/st/st-scroll-bar.c @@ -44,6 +44,7 @@ #define PAGING_INITIAL_REPEAT_TIMEOUT 500 #define PAGING_SUBSEQUENT_REPEAT_TIMEOUT 200 +typedef struct _StScrollBarPrivate StScrollBarPrivate; struct _StScrollBarPrivate { StAdjustment *adjustment; @@ -70,6 +71,8 @@ struct _StScrollBarPrivate G_DEFINE_TYPE_WITH_PRIVATE (StScrollBar, st_scroll_bar, ST_TYPE_WIDGET) +#define ST_SCROLL_BAR_PRIVATE(sb) st_scroll_bar_get_instance_private (ST_SCROLL_BAR (sb)) + enum { PROP_0, @@ -103,7 +106,7 @@ st_scroll_bar_get_property (GObject *gobject, GValue *value, GParamSpec *pspec) { - StScrollBarPrivate *priv = ST_SCROLL_BAR (gobject)->priv; + StScrollBarPrivate *priv = ST_SCROLL_BAR_PRIVATE (gobject); switch (prop_id) { @@ -128,6 +131,7 @@ st_scroll_bar_set_property (GObject *gobject, GParamSpec *pspec) { StScrollBar *bar = ST_SCROLL_BAR (gobject); + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); switch (prop_id) { @@ -136,12 +140,12 @@ st_scroll_bar_set_property (GObject *gobject, break; case PROP_VERTICAL: - bar->priv->vertical = g_value_get_boolean (value); - if (bar->priv->vertical) - clutter_actor_set_name (CLUTTER_ACTOR (bar->priv->handle), + priv->vertical = g_value_get_boolean (value); + if (priv->vertical) + clutter_actor_set_name (CLUTTER_ACTOR (priv->handle), "vhandle"); else - clutter_actor_set_name (CLUTTER_ACTOR (bar->priv->handle), + clutter_actor_set_name (CLUTTER_ACTOR (priv->handle), "hhandle"); clutter_actor_queue_relayout ((ClutterActor*) gobject); break; @@ -156,7 +160,7 @@ static void st_scroll_bar_dispose (GObject *gobject) { StScrollBar *bar = ST_SCROLL_BAR (gobject); - StScrollBarPrivate *priv = bar->priv; + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); if (priv->adjustment) st_scroll_bar_set_adjustment (bar, NULL); @@ -189,7 +193,7 @@ scroll_bar_allocate_children (StScrollBar *bar, const ClutterActorBox *box, ClutterAllocationFlags flags) { - StScrollBarPrivate *priv = bar->priv; + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (bar)); ClutterActorBox content_box, trough_box; @@ -281,7 +285,7 @@ st_scroll_bar_get_preferred_width (ClutterActor *self, gfloat *natural_width_p) { StScrollBar *bar = ST_SCROLL_BAR (self); - StScrollBarPrivate *priv = bar->priv; + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self)); gfloat trough_min_width, trough_natural_width; gfloat handle_min_width, handle_natural_width; @@ -321,7 +325,7 @@ st_scroll_bar_get_preferred_height (ClutterActor *self, gfloat *natural_height_p) { StScrollBar *bar = ST_SCROLL_BAR (self); - StScrollBarPrivate *priv = bar->priv; + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self)); gfloat trough_min_height, trough_natural_height; gfloat handle_min_height, handle_natural_height; @@ -392,7 +396,7 @@ scroll_bar_update_positions (StScrollBar *bar) static void st_scroll_bar_style_changed (StWidget *widget) { - StScrollBarPrivate *priv = ST_SCROLL_BAR (widget)->priv; + StScrollBarPrivate *priv = ST_SCROLL_BAR_PRIVATE (widget); st_widget_style_changed (ST_WIDGET (priv->trough)); st_widget_style_changed (ST_WIDGET (priv->handle)); @@ -406,8 +410,9 @@ bar_reactive_notify_cb (GObject *gobject, gpointer user_data) { StScrollBar *bar = ST_SCROLL_BAR (gobject); + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); - clutter_actor_set_reactive (bar->priv->handle, + clutter_actor_set_reactive (priv->handle, clutter_actor_get_reactive (CLUTTER_ACTOR (bar))); } @@ -460,7 +465,7 @@ static gboolean st_scroll_bar_scroll_event (ClutterActor *actor, ClutterScrollEvent *event) { - StScrollBarPrivate *priv = ST_SCROLL_BAR (actor)->priv; + StScrollBarPrivate *priv = ST_SCROLL_BAR_PRIVATE (actor); if (clutter_event_is_pointer_emulated ((ClutterEvent *) event)) return TRUE; @@ -551,7 +556,7 @@ move_slider (StScrollBar *bar, gfloat x, gfloat y) { - StScrollBarPrivate *priv = bar->priv; + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); gdouble position, lower, upper, page_size; gfloat ux, uy, pos, size; @@ -595,13 +600,14 @@ move_slider (StScrollBar *bar, static void stop_scrolling (StScrollBar *bar) { - if (!bar->priv->grabbed) + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); + if (!priv->grabbed) return; - st_widget_remove_style_pseudo_class (ST_WIDGET (bar->priv->handle), "active"); + st_widget_remove_style_pseudo_class (ST_WIDGET (priv->handle), "active"); clutter_ungrab_pointer (); - bar->priv->grabbed = FALSE; + priv->grabbed = FALSE; g_signal_emit (bar, signals[SCROLL_STOP], 0); } @@ -610,7 +616,8 @@ handle_motion_event_cb (ClutterActor *trough, ClutterMotionEvent *event, StScrollBar *bar) { - if (!bar->priv->grabbed) + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); + if (!priv->grabbed) return FALSE; move_slider (bar, event->x, event->y); @@ -634,7 +641,7 @@ handle_button_press_event_cb (ClutterActor *actor, ClutterButtonEvent *event, StScrollBar *bar) { - StScrollBarPrivate *priv = bar->priv; + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); if (event->button != 1) return FALSE; @@ -672,6 +679,7 @@ animation_completed_cb (ClutterAnimation *animation, static gboolean trough_paging_cb (StScrollBar *self) { + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (self); gfloat handle_pos, event_pos, tx, ty; gdouble value; gdouble page_increment; @@ -682,66 +690,66 @@ trough_paging_cb (StScrollBar *self) GValue v = { 0, }; ClutterTimeline *t; - if (self->priv->paging_event_no == 0) + if (priv->paging_event_no == 0) { /* Scroll on after initial timeout. */ mode = CLUTTER_EASE_OUT_CUBIC; ret = FALSE; - self->priv->paging_event_no = 1; - self->priv->paging_source_id = g_timeout_add ( + priv->paging_event_no = 1; + priv->paging_source_id = g_timeout_add ( PAGING_INITIAL_REPEAT_TIMEOUT, (GSourceFunc) trough_paging_cb, self); - g_source_set_name_by_id (self->priv->paging_source_id, "[gnome-shell] trough_paging_cb"); + g_source_set_name_by_id (priv->paging_source_id, "[gnome-shell] trough_paging_cb"); } - else if (self->priv->paging_event_no == 1) + else if (priv->paging_event_no == 1) { /* Scroll on after subsequent timeout. */ ret = FALSE; mode = CLUTTER_EASE_IN_CUBIC; - self->priv->paging_event_no = 2; - self->priv->paging_source_id = g_timeout_add ( + priv->paging_event_no = 2; + priv->paging_source_id = g_timeout_add ( PAGING_SUBSEQUENT_REPEAT_TIMEOUT, (GSourceFunc) trough_paging_cb, self); - g_source_set_name_by_id (self->priv->paging_source_id, "[gnome-shell] trough_paging_cb"); + g_source_set_name_by_id (priv->paging_source_id, "[gnome-shell] trough_paging_cb"); } else { /* Keep scrolling. */ ret = TRUE; mode = CLUTTER_LINEAR; - self->priv->paging_event_no++; + priv->paging_event_no++; } /* Do the scrolling */ - st_adjustment_get_values (self->priv->adjustment, + st_adjustment_get_values (priv->adjustment, &value, NULL, NULL, NULL, &page_increment, NULL); - if (self->priv->vertical) - handle_pos = clutter_actor_get_y (self->priv->handle); + if (priv->vertical) + handle_pos = clutter_actor_get_y (priv->handle); else - handle_pos = clutter_actor_get_x (self->priv->handle); + handle_pos = clutter_actor_get_x (priv->handle); - clutter_actor_transform_stage_point (CLUTTER_ACTOR (self->priv->trough), - self->priv->move_x, - self->priv->move_y, + clutter_actor_transform_stage_point (CLUTTER_ACTOR (priv->trough), + priv->move_x, + priv->move_y, &tx, &ty); - if (self->priv->vertical) + if (priv->vertical) event_pos = ty; else event_pos = tx; if (event_pos > handle_pos) { - if (self->priv->paging_direction == NONE) + if (priv->paging_direction == NONE) { /* Remember direction. */ - self->priv->paging_direction = DOWN; + priv->paging_direction = DOWN; } - if (self->priv->paging_direction == UP) + if (priv->paging_direction == UP) { /* Scrolled far enough. */ return FALSE; @@ -750,12 +758,12 @@ trough_paging_cb (StScrollBar *self) } else { - if (self->priv->paging_direction == NONE) + if (priv->paging_direction == NONE) { /* Remember direction. */ - self->priv->paging_direction = UP; + priv->paging_direction = UP; } - if (self->priv->paging_direction == DOWN) + if (priv->paging_direction == DOWN) { /* Scrolled far enough. */ return FALSE; @@ -763,24 +771,23 @@ trough_paging_cb (StScrollBar *self) value -= page_increment; } - if (self->priv->paging_animation) + if (priv->paging_animation) { - clutter_animation_completed (self->priv->paging_animation); + clutter_animation_completed (priv->paging_animation); } /* FIXME: Creating a new animation for each scroll is probably not the best * idea, but it's a lot less involved than extenind the current animation */ - a = self->priv->paging_animation = g_object_new (CLUTTER_TYPE_ANIMATION, - "object", self->priv->adjustment, + a = priv->paging_animation = g_object_new (CLUTTER_TYPE_ANIMATION, + "object", priv->adjustment, "duration", (guint)(PAGING_SUBSEQUENT_REPEAT_TIMEOUT * st_slow_down_factor), "mode", mode, NULL); g_value_init (&v, G_TYPE_DOUBLE); g_value_set_double (&v, value); - clutter_animation_bind (self->priv->paging_animation, "value", &v); - t = clutter_animation_get_timeline (self->priv->paging_animation); - g_signal_connect (a, "completed", G_CALLBACK (animation_completed_cb), - self->priv); + clutter_animation_bind (priv->paging_animation, "value", &v); + t = clutter_animation_get_timeline (priv->paging_animation); + g_signal_connect (a, "completed", G_CALLBACK (animation_completed_cb), priv); clutter_timeline_start (t); return ret; @@ -791,18 +798,21 @@ trough_button_press_event_cb (ClutterActor *actor, ClutterButtonEvent *event, StScrollBar *self) { + StScrollBarPrivate *priv; + g_return_val_if_fail (self, FALSE); if (event->button != 1) return FALSE; - if (self->priv->adjustment == NULL) + priv = st_scroll_bar_get_instance_private (self); + if (priv->adjustment == NULL) return FALSE; - self->priv->move_x = event->x; - self->priv->move_y = event->y; - self->priv->paging_direction = NONE; - self->priv->paging_event_no = 0; + priv->move_x = event->x; + priv->move_y = event->y; + priv->paging_direction = NONE; + priv->paging_event_no = 0; trough_paging_cb (self); return TRUE; @@ -813,13 +823,15 @@ trough_button_release_event_cb (ClutterActor *actor, ClutterButtonEvent *event, StScrollBar *self) { + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (self); + if (event->button != 1) return FALSE; - if (self->priv->paging_source_id) + if (priv->paging_source_id) { - g_source_remove (self->priv->paging_source_id); - self->priv->paging_source_id = 0; + g_source_remove (priv->paging_source_id); + priv->paging_source_id = 0; } return TRUE; @@ -830,10 +842,12 @@ trough_leave_event_cb (ClutterActor *actor, ClutterEvent *event, StScrollBar *self) { - if (self->priv->paging_source_id) + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (self); + + if (priv->paging_source_id) { - g_source_remove (self->priv->paging_source_id); - self->priv->paging_source_id = 0; + g_source_remove (priv->paging_source_id); + priv->paging_source_id = 0; return TRUE; } @@ -843,7 +857,7 @@ trough_leave_event_cb (ClutterActor *actor, static void st_scroll_bar_notify_reactive (StScrollBar *self) { - StScrollBarPrivate *priv = self->priv; + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (self); gboolean reactive = clutter_actor_get_reactive (CLUTTER_ACTOR (self)); @@ -854,29 +868,29 @@ st_scroll_bar_notify_reactive (StScrollBar *self) static void st_scroll_bar_init (StScrollBar *self) { - self->priv = st_scroll_bar_get_instance_private (self); + StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (self); - self->priv->trough = (ClutterActor *) st_bin_new (); - clutter_actor_set_reactive ((ClutterActor *) self->priv->trough, TRUE); - clutter_actor_set_name (CLUTTER_ACTOR (self->priv->trough), "trough"); + priv->trough = (ClutterActor *) st_bin_new (); + clutter_actor_set_reactive ((ClutterActor *) priv->trough, TRUE); + clutter_actor_set_name (CLUTTER_ACTOR (priv->trough), "trough"); clutter_actor_add_child (CLUTTER_ACTOR (self), - CLUTTER_ACTOR (self->priv->trough)); - g_signal_connect (self->priv->trough, "button-press-event", + CLUTTER_ACTOR (priv->trough)); + g_signal_connect (priv->trough, "button-press-event", G_CALLBACK (trough_button_press_event_cb), self); - g_signal_connect (self->priv->trough, "button-release-event", + g_signal_connect (priv->trough, "button-release-event", G_CALLBACK (trough_button_release_event_cb), self); - g_signal_connect (self->priv->trough, "leave-event", + g_signal_connect (priv->trough, "leave-event", G_CALLBACK (trough_leave_event_cb), self); - self->priv->handle = (ClutterActor *) st_button_new (); - clutter_actor_set_name (CLUTTER_ACTOR (self->priv->handle), "hhandle"); + priv->handle = (ClutterActor *) st_button_new (); + clutter_actor_set_name (CLUTTER_ACTOR (priv->handle), "hhandle"); clutter_actor_add_child (CLUTTER_ACTOR (self), - CLUTTER_ACTOR (self->priv->handle)); - g_signal_connect (self->priv->handle, "button-press-event", + CLUTTER_ACTOR (priv->handle)); + g_signal_connect (priv->handle, "button-press-event", G_CALLBACK (handle_button_press_event_cb), self); - g_signal_connect (self->priv->handle, "button-release-event", + g_signal_connect (priv->handle, "button-release-event", G_CALLBACK (handle_button_release_event_cb), self); - g_signal_connect (self->priv->handle, "motion-event", + g_signal_connect (priv->handle, "motion-event", G_CALLBACK (handle_motion_event_cb), self); clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE); @@ -916,7 +930,7 @@ st_scroll_bar_set_adjustment (StScrollBar *bar, g_return_if_fail (ST_IS_SCROLL_BAR (bar)); - priv = bar->priv; + priv = st_scroll_bar_get_instance_private (bar); if (adjustment == priv->adjustment) return; @@ -964,6 +978,6 @@ st_scroll_bar_get_adjustment (StScrollBar *bar) { g_return_val_if_fail (ST_IS_SCROLL_BAR (bar), NULL); - return bar->priv->adjustment; + return ((StScrollBarPrivate *)ST_SCROLL_BAR_PRIVATE (bar))->adjustment; } diff --git a/src/st/st-scroll-bar.h b/src/st/st-scroll-bar.h index 371e2a58f..2c69fdd2a 100644 --- a/src/st/st-scroll-bar.h +++ b/src/st/st-scroll-bar.h @@ -30,30 +30,8 @@ G_BEGIN_DECLS -#define ST_TYPE_SCROLL_BAR (st_scroll_bar_get_type()) -#define ST_SCROLL_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_SCROLL_BAR, StScrollBar)) -#define ST_IS_SCROLL_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_SCROLL_BAR)) -#define ST_SCROLL_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_SCROLL_BAR, StScrollBarClass)) -#define ST_IS_SCROLL_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_SCROLL_BAR)) -#define ST_SCROLL_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_SCROLL_BAR, StScrollBarClass)) - -typedef struct _StScrollBar StScrollBar; -typedef struct _StScrollBarPrivate StScrollBarPrivate; -typedef struct _StScrollBarClass StScrollBarClass; - -/** - * StScrollBar: - * - * The contents of this structure are private and should only be accessed - * through the public API. - */ -struct _StScrollBar -{ - /*< private >*/ - StWidget parent_instance; - - StScrollBarPrivate *priv; -}; +#define ST_TYPE_SCROLL_BAR (st_scroll_bar_get_type()) +G_DECLARE_DERIVABLE_TYPE (StScrollBar, st_scroll_bar, ST, SCROLL_BAR, StWidget) struct _StScrollBarClass { @@ -64,8 +42,6 @@ struct _StScrollBarClass void (*scroll_stop) (StScrollBar *bar); }; -GType st_scroll_bar_get_type (void) G_GNUC_CONST; - StWidget *st_scroll_bar_new (StAdjustment *adjustment); void st_scroll_bar_set_adjustment (StScrollBar *bar, diff --git a/src/st/st-scroll-view-fade.c b/src/st/st-scroll-view-fade.c index b326d1554..1753afaa5 100644 --- a/src/st/st-scroll-view-fade.c +++ b/src/st/st-scroll-view-fade.c @@ -19,10 +19,6 @@ */ -#define ST_SCROLL_VIEW_FADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_SCROLL_VIEW_FADE, StScrollViewFadeClass)) -#define ST_IS_SCROLL_VIEW_FADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_SCROLL_VIEW_FADE)) -#define ST_SCROLL_VIEW_FADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_SCROLL_VIEW_FADE, StScrollViewFadeClass)) - #include "st-scroll-view-fade.h" #include "st-scroll-view.h" #include "st-widget.h" @@ -33,8 +29,6 @@ #include #include -typedef struct _StScrollViewFadeClass StScrollViewFadeClass; - #define DEFAULT_FADE_OFFSET 68.0f #include "st-scroll-view-fade-generated.c" @@ -55,11 +49,6 @@ struct _StScrollViewFade float hfade_offset; }; -struct _StScrollViewFadeClass -{ - ClutterShaderEffectClass parent_class; -}; - G_DEFINE_TYPE (StScrollViewFade, st_scroll_view_fade, CLUTTER_TYPE_SHADER_EFFECT); diff --git a/src/st/st-scroll-view-fade.h b/src/st/st-scroll-view-fade.h index f8ec2d5a2..2c65a7763 100644 --- a/src/st/st-scroll-view-fade.h +++ b/src/st/st-scroll-view-fade.h @@ -26,12 +26,8 @@ G_BEGIN_DECLS #define ST_TYPE_SCROLL_VIEW_FADE (st_scroll_view_fade_get_type ()) -#define ST_SCROLL_VIEW_FADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_SCROLL_VIEW_FADE, StScrollViewFade)) -#define ST_IS_SCROLL_VIEW_FADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_SCROLL_VIEW_FADE)) - -typedef struct _StScrollViewFade StScrollViewFade; - -GType st_scroll_view_fade_get_type (void) G_GNUC_CONST; +G_DECLARE_FINAL_TYPE (StScrollViewFade, st_scroll_view_fade, + ST, SCROLL_VIEW_FADE, ClutterShaderEffect) ClutterEffect *st_scroll_view_fade_new (void); diff --git a/src/st/st-scroll-view.h b/src/st/st-scroll-view.h index 02dababd4..35a27a652 100644 --- a/src/st/st-scroll-view.h +++ b/src/st/st-scroll-view.h @@ -32,15 +32,9 @@ G_BEGIN_DECLS #define ST_TYPE_SCROLL_VIEW (st_scroll_view_get_type()) -#define ST_SCROLL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_SCROLL_VIEW, StScrollView)) -#define ST_IS_SCROLL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_SCROLL_VIEW)) -#define ST_SCROLL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_SCROLL_VIEW, StScrollViewClass)) -#define ST_IS_SCROLL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_SCROLL_VIEW)) -#define ST_SCROLL_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_SCROLL_VIEW, StScrollViewClass)) +G_DECLARE_FINAL_TYPE (StScrollView, st_scroll_view, ST, SCROLL_VIEW, StBin) -typedef struct _StScrollView StScrollView; typedef struct _StScrollViewPrivate StScrollViewPrivate; -typedef struct _StScrollViewClass StScrollViewClass; /** * StScrollView: @@ -56,13 +50,6 @@ struct _StScrollView StScrollViewPrivate *priv; }; -struct _StScrollViewClass -{ - StBinClass parent_class; -}; - -GType st_scroll_view_get_type (void) G_GNUC_CONST; - StWidget *st_scroll_view_new (void); ClutterActor *st_scroll_view_get_hscroll_bar (StScrollView *scroll); diff --git a/src/st/st-scrollable.c b/src/st/st-scrollable.c index bb606c3de..d0a8ed09d 100644 --- a/src/st/st-scrollable.c +++ b/src/st/st-scrollable.c @@ -21,6 +21,8 @@ #include "st-scrollable.h" +G_DEFINE_INTERFACE (StScrollable, st_scrollable, G_TYPE_OBJECT) + /** * SECTION:st-scrollable * @short_description: A #ClutterActor that can be scrolled @@ -77,7 +79,7 @@ * page_increment: page_size - step_increment */ static void -st_scrollable_base_init (gpointer g_iface) +st_scrollable_default_init (StScrollableInterface *g_iface) { static gboolean initialized = FALSE; @@ -101,32 +103,14 @@ st_scrollable_base_init (gpointer g_iface) } } -GType -st_scrollable_get_type (void) -{ - static GType type = 0; - if (type == 0) - { - static const GTypeInfo info = - { - sizeof (StScrollableInterface), - st_scrollable_base_init, /* base_init */ - NULL, - }; - type = g_type_register_static (G_TYPE_INTERFACE, - "StScrollable", &info, 0); - } - return type; -} - void st_scrollable_set_adjustments (StScrollable *scrollable, StAdjustment *hadjustment, StAdjustment *vadjustment) { - ST_SCROLLABLE_GET_INTERFACE (scrollable)->set_adjustments (scrollable, - hadjustment, - vadjustment); + ST_SCROLLABLE_GET_IFACE (scrollable)->set_adjustments (scrollable, + hadjustment, + vadjustment); } /** @@ -142,7 +126,7 @@ st_scrollable_get_adjustments (StScrollable *scrollable, StAdjustment **hadjustment, StAdjustment **vadjustment) { - ST_SCROLLABLE_GET_INTERFACE (scrollable)->get_adjustments (scrollable, - hadjustment, - vadjustment); + ST_SCROLLABLE_GET_IFACE (scrollable)->get_adjustments (scrollable, + hadjustment, + vadjustment); } diff --git a/src/st/st-scrollable.h b/src/st/st-scrollable.h index 5c8d32ef3..797ec7db0 100644 --- a/src/st/st-scrollable.h +++ b/src/st/st-scrollable.h @@ -31,11 +31,8 @@ G_BEGIN_DECLS #define ST_TYPE_SCROLLABLE (st_scrollable_get_type ()) -#define ST_SCROLLABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_SCROLLABLE, StScrollable)) -#define ST_IS_SCROLLABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_SCROLLABLE)) -#define ST_SCROLLABLE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), ST_TYPE_SCROLLABLE, StScrollableInterface)) +G_DECLARE_INTERFACE (StScrollable, st_scrollable, ST, SCROLLABLE, GObject) -typedef struct _StScrollable StScrollable; /* Dummy object */ typedef struct _StScrollableInterface StScrollableInterface; struct _StScrollableInterface @@ -50,8 +47,6 @@ struct _StScrollableInterface StAdjustment **vadjustment); }; -GType st_scrollable_get_type (void) G_GNUC_CONST; - void st_scrollable_set_adjustments (StScrollable *scrollable, StAdjustment *hadjustment, StAdjustment *vadjustment); diff --git a/src/st/st-texture-cache.h b/src/st/st-texture-cache.h index e7d3a50bf..26f9c30ac 100644 --- a/src/st/st-texture-cache.h +++ b/src/st/st-texture-cache.h @@ -34,14 +34,8 @@ #include #define ST_TYPE_TEXTURE_CACHE (st_texture_cache_get_type ()) -#define ST_TEXTURE_CACHE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_TEXTURE_CACHE, StTextureCache)) -#define ST_TEXTURE_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_TEXTURE_CACHE, StTextureCacheClass)) -#define ST_IS_TEXTURE_CACHE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_TEXTURE_CACHE)) -#define ST_IS_TEXTURE_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_TEXTURE_CACHE)) -#define ST_TEXTURE_CACHE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_TEXTURE_CACHE, StTextureCacheClass)) - -typedef struct _StTextureCache StTextureCache; -typedef struct _StTextureCacheClass StTextureCacheClass; +G_DECLARE_FINAL_TYPE (StTextureCache, st_texture_cache, + ST, TEXTURE_CACHE, GObject) typedef struct _StTextureCachePrivate StTextureCachePrivate; @@ -52,19 +46,11 @@ struct _StTextureCache StTextureCachePrivate *priv; }; -struct _StTextureCacheClass -{ - GObjectClass parent_class; - -}; - typedef enum { ST_TEXTURE_CACHE_POLICY_NONE, ST_TEXTURE_CACHE_POLICY_FOREVER } StTextureCachePolicy; -GType st_texture_cache_get_type (void) G_GNUC_CONST; - StTextureCache* st_texture_cache_get_default (void); ClutterActor * diff --git a/src/st/st-theme-context.c b/src/st/st-theme-context.c index 25d03cceb..4916d8945 100644 --- a/src/st/st-theme-context.c +++ b/src/st/st-theme-context.c @@ -38,10 +38,6 @@ struct _StThemeContext { int scale_factor; }; -struct _StThemeContextClass { - GObjectClass parent_class; -}; - #define DEFAULT_FONT "sans-serif 10" enum diff --git a/src/st/st-theme-context.h b/src/st/st-theme-context.h index 9fa7afb70..efb3531e2 100644 --- a/src/st/st-theme-context.h +++ b/src/st/st-theme-context.h @@ -38,16 +38,9 @@ G_BEGIN_DECLS * by using st_theme_context_get_for_stage(). */ -typedef struct _StThemeContextClass StThemeContextClass; - #define ST_TYPE_THEME_CONTEXT (st_theme_context_get_type ()) -#define ST_THEME_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ST_TYPE_THEME_CONTEXT, StThemeContext)) -#define ST_THEME_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_THEME_CONTEXT, StThemeContextClass)) -#define ST_IS_THEME_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ST_TYPE_THEME_CONTEXT)) -#define ST_IS_THEME_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_THEME_CONTEXT)) -#define ST_THEME_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_THEME_CONTEXT, StThemeContextClass)) - -GType st_theme_context_get_type (void) G_GNUC_CONST; +G_DECLARE_FINAL_TYPE (StThemeContext, st_theme_context, + ST, THEME_CONTEXT, GObject) StThemeContext *st_theme_context_new (void); StThemeContext *st_theme_context_get_for_stage (ClutterStage *stage); diff --git a/src/st/st-theme-node-private.h b/src/st/st-theme-node-private.h index f691cae6b..985c24e3a 100644 --- a/src/st/st-theme-node-private.h +++ b/src/st/st-theme-node-private.h @@ -116,11 +116,6 @@ struct _StThemeNode { StThemeNodePaintState cached_state; }; -struct _StThemeNodeClass { - GObjectClass parent_class; - -}; - void _st_theme_node_ensure_background (StThemeNode *node); void _st_theme_node_ensure_geometry (StThemeNode *node); void _st_theme_node_apply_margins (StThemeNode *node, diff --git a/src/st/st-theme-node-transition.c b/src/st/st-theme-node-transition.c index e255f9622..5c2f0cfde 100644 --- a/src/st/st-theme-node-transition.c +++ b/src/st/st-theme-node-transition.c @@ -27,6 +27,14 @@ enum { LAST_SIGNAL }; +typedef struct _StThemeNodeTransitionPrivate StThemeNodeTransitionPrivate; + +struct _StThemeNodeTransition { + GObject parent; + + StThemeNodeTransitionPrivate *priv; +}; + struct _StThemeNodeTransitionPrivate { StThemeNode *old_theme_node; StThemeNode *new_theme_node; @@ -80,14 +88,12 @@ st_theme_node_transition_new (StThemeNode *from_node, guint duration) { StThemeNodeTransition *transition; - g_return_val_if_fail (ST_IS_THEME_NODE (from_node), NULL); g_return_val_if_fail (ST_IS_THEME_NODE (to_node), NULL); duration = st_theme_node_get_transition_duration (to_node); - transition = g_object_new (ST_TYPE_THEME_NODE_TRANSITION, - NULL); + transition = g_object_new (ST_TYPE_THEME_NODE_TRANSITION, NULL); transition->priv->old_theme_node = g_object_ref (from_node); transition->priv->new_theme_node = g_object_ref (to_node); @@ -121,13 +127,14 @@ void st_theme_node_transition_update (StThemeNodeTransition *transition, StThemeNode *new_node) { - StThemeNodeTransitionPrivate *priv = transition->priv; + StThemeNodeTransitionPrivate *priv; StThemeNode *old_node; ClutterTimelineDirection direction; g_return_if_fail (ST_IS_THEME_NODE_TRANSITION (transition)); g_return_if_fail (ST_IS_THEME_NODE (new_node)); + priv = transition->priv; direction = clutter_timeline_get_direction (priv->timeline); old_node = (direction == CLUTTER_TIMELINE_FORWARD) ? priv->old_theme_node : priv->new_theme_node; diff --git a/src/st/st-theme-node-transition.h b/src/st/st-theme-node-transition.h index d7f96b7d2..8762b6d31 100644 --- a/src/st/st-theme-node-transition.h +++ b/src/st/st-theme-node-transition.h @@ -28,28 +28,9 @@ G_BEGIN_DECLS -#define ST_TYPE_THEME_NODE_TRANSITION (st_theme_node_transition_get_type ()) -#define ST_THEME_NODE_TRANSITION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ST_TYPE_THEME_NODE_TRANSITION, StThemeNodeTransition)) -#define ST_IS_THEME_NODE_TRANSITION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ST_TYPE_THEME_NODE_TRANSITION)) -#define ST_THEME_NODE_TRANSITION_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), ST_TYPE_THEME_NODE_TRANSITION, StThemeNodeTransitionClass)) -#define ST_IS_THEME_NODE_TRANSITION_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), ST_TYPE_THEME_NODE_TRANSITION)) -#define ST_THEME_NODE_TRANSITION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ST_THEME_NODE_TRANSITION, StThemeNodeTransitionClass)) - -typedef struct _StThemeNodeTransition StThemeNodeTransition; -typedef struct _StThemeNodeTransitionClass StThemeNodeTransitionClass; -typedef struct _StThemeNodeTransitionPrivate StThemeNodeTransitionPrivate; - -struct _StThemeNodeTransition { - GObject parent; - - StThemeNodeTransitionPrivate *priv; -}; - -struct _StThemeNodeTransitionClass { - GObjectClass parent_class; -}; - -GType st_theme_node_transition_get_type (void) G_GNUC_CONST; +#define ST_TYPE_THEME_NODE_TRANSITION (st_theme_node_transition_get_type ()) +G_DECLARE_FINAL_TYPE (StThemeNodeTransition, st_theme_node_transition, + ST, THEME_NODE_TRANSITION, GObject) StThemeNodeTransition *st_theme_node_transition_new (StThemeNode *from_node, StThemeNode *to_node, diff --git a/src/st/st-theme-node.h b/src/st/st-theme-node.h index 0a5edf912..8f326bd7b 100644 --- a/src/st/st-theme-node.h +++ b/src/st/st-theme-node.h @@ -48,15 +48,8 @@ G_BEGIN_DECLS typedef struct _StTheme StTheme; typedef struct _StThemeContext StThemeContext; -typedef struct _StThemeNode StThemeNode; -typedef struct _StThemeNodeClass StThemeNodeClass; - #define ST_TYPE_THEME_NODE (st_theme_node_get_type ()) -#define ST_THEME_NODE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ST_TYPE_THEME_NODE, StThemeNode)) -#define ST_THEME_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_THEME_NODE, StThemeNodeClass)) -#define ST_IS_THEME_NODE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ST_TYPE_THEME_NODE)) -#define ST_IS_THEME_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_THEME_NODE)) -#define ST_THEME_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_THEME_NODE, StThemeNodeClass)) +G_DECLARE_FINAL_TYPE (StThemeNode, st_theme_node, ST, THEME_NODE, GObject) typedef enum { ST_SIDE_TOP, @@ -117,8 +110,6 @@ struct _StThemeNodePaintState { CoglHandle corner_material[4]; }; -GType st_theme_node_get_type (void) G_GNUC_CONST; - StThemeNode *st_theme_node_new (StThemeContext *context, StThemeNode *parent_node, /* can be null */ StTheme *theme, /* can be null */ diff --git a/src/st/st-theme.c b/src/st/st-theme.c index ad0a4fffc..b567f7e5e 100644 --- a/src/st/st-theme.c +++ b/src/st/st-theme.c @@ -71,11 +71,6 @@ struct _StTheme CRCascade *cascade; }; -struct _StThemeClass -{ - GObjectClass parent_class; -}; - enum { PROP_0, diff --git a/src/st/st-theme.h b/src/st/st-theme.h index b6dee0425..6cee089a1 100644 --- a/src/st/st-theme.h +++ b/src/st/st-theme.h @@ -36,16 +36,8 @@ G_BEGIN_DECLS * of actors using st_widget_set_theme(). */ -typedef struct _StThemeClass StThemeClass; - #define ST_TYPE_THEME (st_theme_get_type ()) -#define ST_THEME(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ST_TYPE_THEME, StTheme)) -#define ST_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_THEME, StThemeClass)) -#define ST_IS_THEME(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ST_TYPE_THEME)) -#define ST_IS_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_THEME)) -#define ST_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_THEME, StThemeClass)) - -GType st_theme_get_type (void) G_GNUC_CONST; +G_DECLARE_FINAL_TYPE (StTheme, st_theme, ST, THEME, GObject) StTheme *st_theme_new (GFile *application_stylesheet, GFile *theme_stylesheet, diff --git a/src/st/st-widget.c b/src/st/st-widget.c index 2aa6e4c78..63a51f533 100644 --- a/src/st/st-widget.c +++ b/src/st/st-widget.c @@ -53,6 +53,7 @@ /* * Forward declaration for sake of StWidgetChild */ +typedef struct _StWidgetPrivate StWidgetPrivate; struct _StWidgetPrivate { StTheme *theme; @@ -129,6 +130,7 @@ static guint signals[LAST_SIGNAL] = { 0, }; gfloat st_slow_down_factor = 1.0; G_DEFINE_TYPE_WITH_PRIVATE (StWidget, st_widget, CLUTTER_TYPE_ACTOR); +#define ST_WIDGET_PRIVATE(w) ((StWidgetPrivate *)st_widget_get_instance_private (w)) static void st_widget_recompute_style (StWidget *widget, StThemeNode *old_theme_node); @@ -201,7 +203,7 @@ st_widget_get_property (GObject *gobject, GParamSpec *pspec) { StWidget *actor = ST_WIDGET (gobject); - StWidgetPrivate *priv = actor->priv; + StWidgetPrivate *priv = st_widget_get_instance_private (ST_WIDGET (gobject)); switch (prop_id) { @@ -254,24 +256,30 @@ st_widget_get_property (GObject *gobject, static void st_widget_remove_transition (StWidget *widget) { - if (widget->priv->transition_animation) + StWidgetPrivate *priv = st_widget_get_instance_private (widget); + + if (priv->transition_animation) { - g_object_run_dispose (G_OBJECT (widget->priv->transition_animation)); - g_object_unref (widget->priv->transition_animation); - widget->priv->transition_animation = NULL; + g_object_run_dispose (G_OBJECT (priv->transition_animation)); + g_object_unref (priv->transition_animation); + priv->transition_animation = NULL; } } static void next_paint_state (StWidget *widget) { - widget->priv->current_paint_state = (widget->priv->current_paint_state + 1) % G_N_ELEMENTS (widget->priv->paint_states); + StWidgetPrivate *priv = st_widget_get_instance_private (widget); + + priv->current_paint_state = (priv->current_paint_state + 1) % G_N_ELEMENTS (priv->paint_states); } static StThemeNodePaintState * current_paint_state (StWidget *widget) { - return &widget->priv->paint_states[widget->priv->current_paint_state]; + StWidgetPrivate *priv = st_widget_get_instance_private (widget); + + return &priv->paint_states[priv->current_paint_state]; } static void @@ -280,7 +288,8 @@ st_widget_texture_cache_changed (StTextureCache *cache, gpointer user_data) { StWidget *actor = ST_WIDGET (user_data); - StThemeNode *node = actor->priv->theme_node; + StWidgetPrivate *priv = st_widget_get_instance_private (actor); + StThemeNode *node = priv->theme_node; gboolean changed = FALSE; GFile *theme_file; @@ -322,7 +331,7 @@ static void st_widget_dispose (GObject *gobject) { StWidget *actor = ST_WIDGET (gobject); - StWidgetPrivate *priv = ST_WIDGET (actor)->priv; + StWidgetPrivate *priv = st_widget_get_instance_private (actor); g_clear_pointer (&priv->theme, g_object_unref); g_clear_pointer (&priv->theme_node, g_object_unref); @@ -346,7 +355,7 @@ st_widget_dispose (GObject *gobject) static void st_widget_finalize (GObject *gobject) { - StWidgetPrivate *priv = ST_WIDGET (gobject)->priv; + StWidgetPrivate *priv = st_widget_get_instance_private (ST_WIDGET (gobject)); guint i; g_free (priv->style_class); @@ -429,6 +438,7 @@ st_widget_allocate (ClutterActor *actor, void st_widget_paint_background (StWidget *widget) { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); StThemeNode *theme_node; ClutterActorBox allocation; guint8 opacity; @@ -439,8 +449,8 @@ st_widget_paint_background (StWidget *widget) opacity = clutter_actor_get_paint_opacity (CLUTTER_ACTOR (widget)); - if (widget->priv->transition_animation) - st_theme_node_transition_paint (widget->priv->transition_animation, + if (priv->transition_animation) + st_theme_node_transition_paint (priv->transition_animation, &allocation, opacity); else @@ -491,7 +501,7 @@ static void st_widget_unmap (ClutterActor *actor) { StWidget *self = ST_WIDGET (actor); - StWidgetPrivate *priv = self->priv; + StWidgetPrivate *priv = st_widget_get_instance_private (self); CLUTTER_ACTOR_CLASS (st_widget_parent_class)->unmap (actor); @@ -525,13 +535,14 @@ st_widget_real_style_changed (StWidget *self) void st_widget_style_changed (StWidget *widget) { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); StThemeNode *old_theme_node = NULL; - widget->priv->is_style_dirty = TRUE; - if (widget->priv->theme_node) + priv->is_style_dirty = TRUE; + if (priv->theme_node) { - old_theme_node = widget->priv->theme_node; - widget->priv->theme_node = NULL; + old_theme_node = priv->theme_node; + priv->theme_node = NULL; } /* update the style only if we are mapped */ @@ -584,7 +595,7 @@ get_root_theme_node (ClutterStage *stage) StThemeNode * st_widget_get_theme_node (StWidget *widget) { - StWidgetPrivate *priv = widget->priv; + StWidgetPrivate *priv = st_widget_get_instance_private (widget); if (priv->theme_node == NULL) { @@ -668,16 +679,16 @@ st_widget_get_theme_node (StWidget *widget) StThemeNode * st_widget_peek_theme_node (StWidget *widget) { - StWidgetPrivate *priv = widget->priv; + g_return_val_if_fail (ST_IS_WIDGET (widget), NULL); - return priv->theme_node; + return ST_WIDGET_PRIVATE (widget)->theme_node; } static gboolean st_widget_enter (ClutterActor *actor, ClutterCrossingEvent *event) { - StWidgetPrivate *priv = ST_WIDGET (actor)->priv; + StWidgetPrivate *priv = st_widget_get_instance_private (ST_WIDGET (actor)); if (priv->track_hover) { @@ -703,7 +714,7 @@ static gboolean st_widget_leave (ClutterActor *actor, ClutterCrossingEvent *event) { - StWidgetPrivate *priv = ST_WIDGET (actor)->priv; + StWidgetPrivate *priv = st_widget_get_instance_private (ST_WIDGET (actor)); if (priv->track_hover) { @@ -761,7 +772,7 @@ st_widget_get_paint_volume (ClutterActor *self, if (!clutter_actor_has_allocation (self)) return FALSE; - priv = ST_WIDGET (self)->priv; + priv = st_widget_get_instance_private (ST_WIDGET (self)); theme_node = st_widget_get_theme_node (ST_WIDGET (self)); clutter_actor_get_allocation_box (self, &alloc_box); @@ -1036,7 +1047,7 @@ st_widget_set_theme (StWidget *actor, g_return_if_fail (ST_IS_WIDGET (actor)); - priv = actor->priv; + priv = st_widget_get_instance_private (actor); if (theme != priv->theme) { @@ -1063,7 +1074,7 @@ st_widget_get_theme (StWidget *actor) { g_return_val_if_fail (ST_IS_WIDGET (actor), NULL); - return actor->priv->theme; + return ST_WIDGET_PRIVATE (actor)->theme; } static const gchar * @@ -1173,9 +1184,13 @@ void st_widget_set_style_class_name (StWidget *actor, const gchar *style_class_list) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (actor)); - if (set_class_list (&actor->priv->style_class, style_class_list)) + priv = st_widget_get_instance_private (actor); + + if (set_class_list (&priv->style_class, style_class_list)) { st_widget_style_changed (actor); g_object_notify (G_OBJECT (actor), "style-class"); @@ -1194,10 +1209,14 @@ void st_widget_add_style_class_name (StWidget *actor, const gchar *style_class) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (actor)); g_return_if_fail (style_class != NULL); - if (add_class_name (&actor->priv->style_class, style_class)) + priv = st_widget_get_instance_private (actor); + + if (add_class_name (&priv->style_class, style_class)) { st_widget_style_changed (actor); g_object_notify (G_OBJECT (actor), "style-class"); @@ -1216,10 +1235,14 @@ void st_widget_remove_style_class_name (StWidget *actor, const gchar *style_class) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (actor)); g_return_if_fail (style_class != NULL); - if (remove_class_name (&actor->priv->style_class, style_class)) + priv = st_widget_get_instance_private (actor); + + if (remove_class_name (&priv->style_class, style_class)) { st_widget_style_changed (actor); g_object_notify (G_OBJECT (actor), "style-class"); @@ -1240,7 +1263,7 @@ st_widget_get_style_class_name (StWidget *actor) { g_return_val_if_fail (ST_IS_WIDGET (actor), NULL); - return actor->priv->style_class; + return ST_WIDGET_PRIVATE (actor)->style_class; } /** @@ -1257,9 +1280,13 @@ gboolean st_widget_has_style_class_name (StWidget *actor, const gchar *style_class) { + StWidgetPrivate *priv; + g_return_val_if_fail (ST_IS_WIDGET (actor), FALSE); - return find_class_name (actor->priv->style_class, style_class) != NULL; + priv = st_widget_get_instance_private (actor); + + return find_class_name (priv->style_class, style_class) != NULL; } /** @@ -1280,7 +1307,7 @@ st_widget_get_style_pseudo_class (StWidget *actor) { g_return_val_if_fail (ST_IS_WIDGET (actor), NULL); - return actor->priv->pseudo_class; + return ST_WIDGET_PRIVATE (actor)->pseudo_class; } /** @@ -1297,9 +1324,13 @@ gboolean st_widget_has_style_pseudo_class (StWidget *actor, const gchar *pseudo_class) { + StWidgetPrivate *priv; + g_return_val_if_fail (ST_IS_WIDGET (actor), FALSE); - return find_class_name (actor->priv->pseudo_class, pseudo_class) != NULL; + priv = st_widget_get_instance_private (actor); + + return find_class_name (priv->pseudo_class, pseudo_class) != NULL; } /** @@ -1316,9 +1347,13 @@ void st_widget_set_style_pseudo_class (StWidget *actor, const gchar *pseudo_class_list) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (actor)); - if (set_class_list (&actor->priv->pseudo_class, pseudo_class_list)) + priv = st_widget_get_instance_private (actor); + + if (set_class_list (&priv->pseudo_class, pseudo_class_list)) { st_widget_style_changed (actor); g_object_notify (G_OBJECT (actor), "pseudo-class"); @@ -1337,10 +1372,14 @@ void st_widget_add_style_pseudo_class (StWidget *actor, const gchar *pseudo_class) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (actor)); g_return_if_fail (pseudo_class != NULL); - if (add_class_name (&actor->priv->pseudo_class, pseudo_class)) + priv = st_widget_get_instance_private (actor); + + if (add_class_name (&priv->pseudo_class, pseudo_class)) { st_widget_style_changed (actor); g_object_notify (G_OBJECT (actor), "pseudo-class"); @@ -1358,10 +1397,14 @@ void st_widget_remove_style_pseudo_class (StWidget *actor, const gchar *pseudo_class) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (actor)); g_return_if_fail (pseudo_class != NULL); - if (remove_class_name (&actor->priv->pseudo_class, pseudo_class)) + priv = st_widget_get_instance_private (actor); + + if (remove_class_name (&priv->pseudo_class, pseudo_class)) { st_widget_style_changed (actor); g_object_notify (G_OBJECT (actor), "pseudo-class"); @@ -1385,7 +1428,7 @@ st_widget_set_style (StWidget *actor, g_return_if_fail (ST_IS_WIDGET (actor)); - priv = actor->priv; + priv = st_widget_get_instance_private (actor); if (g_strcmp0 (style, priv->inline_style)) { @@ -1412,7 +1455,7 @@ st_widget_get_style (StWidget *actor) { g_return_val_if_fail (ST_IS_WIDGET (actor), NULL); - return actor->priv->inline_style; + return ST_WIDGET_PRIVATE (actor)->inline_style; } static void @@ -1428,12 +1471,14 @@ st_widget_reactive_notify (StWidget *widget, GParamSpec *pspec, gpointer data) { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); + if (clutter_actor_get_reactive (CLUTTER_ACTOR (widget))) st_widget_remove_style_pseudo_class (widget, "insensitive"); else st_widget_add_style_pseudo_class (widget, "insensitive"); - if (widget->priv->track_hover) + if (priv->track_hover) st_widget_sync_hover(widget); } @@ -1442,12 +1487,13 @@ st_widget_first_child_notify (StWidget *widget, GParamSpec *pspec, gpointer data) { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); ClutterActor *first_child; - if (widget->priv->prev_first_child != NULL) + if (priv->prev_first_child != NULL) { - st_widget_remove_style_pseudo_class (widget->priv->prev_first_child, "first-child"); - g_clear_object (&widget->priv->prev_first_child); + st_widget_remove_style_pseudo_class (priv->prev_first_child, "first-child"); + g_clear_object (&priv->prev_first_child); } first_child = clutter_actor_get_first_child (CLUTTER_ACTOR (widget)); @@ -1458,7 +1504,7 @@ st_widget_first_child_notify (StWidget *widget, if (ST_IS_WIDGET (first_child)) { st_widget_add_style_pseudo_class (ST_WIDGET (first_child), "first-child"); - widget->priv->prev_first_child = g_object_ref (ST_WIDGET (first_child)); + priv->prev_first_child = g_object_ref (ST_WIDGET (first_child)); } } @@ -1467,12 +1513,13 @@ st_widget_last_child_notify (StWidget *widget, GParamSpec *pspec, gpointer data) { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); ClutterActor *last_child; - if (widget->priv->prev_last_child != NULL) + if (priv->prev_last_child != NULL) { - st_widget_remove_style_pseudo_class (widget->priv->prev_last_child, "last-child"); - g_clear_object (&widget->priv->prev_last_child); + st_widget_remove_style_pseudo_class (priv->prev_last_child, "last-child"); + g_clear_object (&priv->prev_last_child); } last_child = clutter_actor_get_last_child (CLUTTER_ACTOR (widget)); @@ -1483,7 +1530,7 @@ st_widget_last_child_notify (StWidget *widget, if (ST_IS_WIDGET (last_child)) { st_widget_add_style_pseudo_class (ST_WIDGET (last_child), "last-child"); - widget->priv->prev_last_child = g_object_ref (ST_WIDGET (last_child)); + priv->prev_last_child = g_object_ref (ST_WIDGET (last_child)); } } @@ -1493,7 +1540,7 @@ st_widget_init (StWidget *actor) StWidgetPrivate *priv; guint i; - actor->priv = priv = st_widget_get_instance_private (actor); + priv = st_widget_get_instance_private (actor); priv->transition_animation = NULL; priv->local_state_set = atk_state_set_new (); @@ -1526,6 +1573,7 @@ static void st_widget_recompute_style (StWidget *widget, StThemeNode *old_theme_node) { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); StThemeNode *new_theme_node = st_widget_get_theme_node (widget); int transition_duration; gboolean paint_equal; @@ -1533,7 +1581,7 @@ st_widget_recompute_style (StWidget *widget, if (new_theme_node == old_theme_node) { - widget->priv->is_style_dirty = FALSE; + priv->is_style_dirty = FALSE; return; } @@ -1553,9 +1601,9 @@ st_widget_recompute_style (StWidget *widget, if (animations_enabled && transition_duration > 0) { - if (widget->priv->transition_animation != NULL) + if (priv->transition_animation != NULL) { - st_theme_node_transition_update (widget->priv->transition_animation, + st_theme_node_transition_update (priv->transition_animation, new_theme_node); } else if (old_theme_node && !paint_equal) @@ -1566,21 +1614,21 @@ st_widget_recompute_style (StWidget *widget, * we can't animate that anyways. */ - widget->priv->transition_animation = + priv->transition_animation = st_theme_node_transition_new (old_theme_node, new_theme_node, current_paint_state (widget), transition_duration); - g_signal_connect (widget->priv->transition_animation, "completed", + g_signal_connect (priv->transition_animation, "completed", G_CALLBACK (on_transition_completed), widget); - g_signal_connect_swapped (widget->priv->transition_animation, + g_signal_connect_swapped (priv->transition_animation, "new-frame", G_CALLBACK (clutter_actor_queue_redraw), widget); } } - else if (widget->priv->transition_animation) + else if (priv->transition_animation) { st_widget_remove_transition (widget); } @@ -1594,7 +1642,7 @@ st_widget_recompute_style (StWidget *widget, } g_signal_emit (widget, signals[STYLE_CHANGED], 0); - widget->priv->is_style_dirty = FALSE; + priv->is_style_dirty = FALSE; } /** @@ -1607,9 +1655,13 @@ st_widget_recompute_style (StWidget *widget, void st_widget_ensure_style (StWidget *widget) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (widget)); - if (widget->priv->is_style_dirty) + priv = st_widget_get_instance_private (widget); + + if (priv->is_style_dirty) st_widget_recompute_style (widget, NULL); } @@ -1639,7 +1691,7 @@ st_widget_set_track_hover (StWidget *widget, g_return_if_fail (ST_IS_WIDGET (widget)); - priv = widget->priv; + priv = st_widget_get_instance_private (widget); if (priv->track_hover != track_hover) { @@ -1667,7 +1719,7 @@ st_widget_get_track_hover (StWidget *widget) { g_return_val_if_fail (ST_IS_WIDGET (widget), FALSE); - return widget->priv->track_hover; + return ST_WIDGET_PRIVATE (widget)->track_hover; } /** @@ -1690,7 +1742,7 @@ st_widget_set_hover (StWidget *widget, g_return_if_fail (ST_IS_WIDGET (widget)); - priv = widget->priv; + priv = st_widget_get_instance_private (widget); if (priv->hover != hover) { @@ -1741,7 +1793,7 @@ st_widget_get_hover (StWidget *widget) { g_return_val_if_fail (ST_IS_WIDGET (widget), FALSE); - return widget->priv->hover; + return ST_WIDGET_PRIVATE (widget)->hover; } /** @@ -1761,7 +1813,7 @@ st_widget_set_can_focus (StWidget *widget, g_return_if_fail (ST_IS_WIDGET (widget)); - priv = widget->priv; + priv = st_widget_get_instance_private (widget); if (priv->can_focus != can_focus) { @@ -1784,7 +1836,7 @@ st_widget_get_can_focus (StWidget *widget) { g_return_val_if_fail (ST_IS_WIDGET (widget), FALSE); - return widget->priv->can_focus; + return ST_WIDGET_PRIVATE (widget)->can_focus; } /** @@ -1905,6 +1957,7 @@ st_widget_real_navigate_focus (StWidget *widget, ClutterActor *from, GtkDirectionType direction) { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); ClutterActor *widget_actor, *focus_child; GList *children, *l; @@ -1920,7 +1973,7 @@ st_widget_real_navigate_focus (StWidget *widget, while (focus_child && clutter_actor_get_parent (focus_child) != widget_actor) focus_child = clutter_actor_get_parent (focus_child); - if (widget->priv->can_focus) + if (priv->can_focus) { if (!focus_child) { @@ -2229,7 +2282,7 @@ st_widget_get_label_actor (StWidget *widget) { g_return_val_if_fail (ST_IS_WIDGET (widget), NULL); - return widget->priv->label_actor; + return ST_WIDGET_PRIVATE (widget)->label_actor; } /** @@ -2246,17 +2299,21 @@ void st_widget_set_label_actor (StWidget *widget, ClutterActor *label) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (widget)); - if (widget->priv->label_actor != label) + priv = st_widget_get_instance_private (widget); + + if (priv->label_actor != label) { - if (widget->priv->label_actor) - g_object_unref (widget->priv->label_actor); + if (priv->label_actor) + g_object_unref (priv->label_actor); if (label != NULL) - widget->priv->label_actor = g_object_ref (label); + priv->label_actor = g_object_ref (label); else - widget->priv->label_actor = NULL; + priv->label_actor = NULL; g_object_notify (G_OBJECT (widget), "label-actor"); } @@ -2281,12 +2338,16 @@ void st_widget_set_accessible_name (StWidget *widget, const gchar *name) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (widget)); - if (widget->priv->accessible_name != NULL) - g_free (widget->priv->accessible_name); + priv = st_widget_get_instance_private (widget); + + if (priv->accessible_name != NULL) + g_free (priv->accessible_name); - widget->priv->accessible_name = g_strdup (name); + priv->accessible_name = g_strdup (name); g_object_notify (G_OBJECT (widget), "accessible-name"); } @@ -2305,7 +2366,7 @@ st_widget_get_accessible_name (StWidget *widget) { g_return_val_if_fail (ST_IS_WIDGET (widget), NULL); - return widget->priv->accessible_name; + return ST_WIDGET_PRIVATE (widget)->accessible_name; } /** @@ -2334,9 +2395,12 @@ void st_widget_set_accessible_role (StWidget *widget, AtkRole role) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (widget)); - widget->priv->accessible_role = role; + priv = st_widget_get_instance_private (widget); + priv->accessible_role = role; g_object_notify (G_OBJECT (widget), "accessible-role"); } @@ -2354,14 +2418,17 @@ st_widget_set_accessible_role (StWidget *widget, AtkRole st_widget_get_accessible_role (StWidget *widget) { + StWidgetPrivate *priv; AtkObject *accessible = NULL; AtkRole role = ATK_ROLE_INVALID; g_return_val_if_fail (ST_IS_WIDGET (widget), ATK_ROLE_INVALID); - if (widget->priv->accessible_role != ATK_ROLE_INVALID) - role = widget->priv->accessible_role; - else if (widget->priv->accessible != NULL) + priv = st_widget_get_instance_private (widget); + + if (priv->accessible_role != ATK_ROLE_INVALID) + role = priv->accessible_role; + else if (priv->accessible != NULL) role = atk_object_get_role (accessible); return role; @@ -2372,8 +2439,10 @@ notify_accessible_state_change (StWidget *widget, AtkStateType state, gboolean value) { - if (widget->priv->accessible != NULL) - atk_object_notify_state_change (widget->priv->accessible, state, value); + StWidgetPrivate *priv = st_widget_get_instance_private (widget); + + if (priv->accessible != NULL) + atk_object_notify_state_change (priv->accessible, state, value); } /** @@ -2399,9 +2468,13 @@ void st_widget_add_accessible_state (StWidget *widget, AtkStateType state) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (widget)); - if (atk_state_set_add_state (widget->priv->local_state_set, state)) + priv = st_widget_get_instance_private (widget); + + if (atk_state_set_add_state (priv->local_state_set, state)) notify_accessible_state_change (widget, state, TRUE); } @@ -2418,9 +2491,13 @@ void st_widget_remove_accessible_state (StWidget *widget, AtkStateType state) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (widget)); - if (atk_state_set_remove_state (widget->priv->local_state_set, state)) + priv = st_widget_get_instance_private (widget); + + if (atk_state_set_remove_state (priv->local_state_set, state)) notify_accessible_state_change (widget, state, FALSE); } @@ -2471,18 +2548,20 @@ static AtkObject * st_widget_get_accessible (ClutterActor *actor) { StWidget *widget = NULL; + StWidgetPrivate *priv; g_return_val_if_fail (ST_IS_WIDGET (actor), NULL); widget = ST_WIDGET (actor); + priv = st_widget_get_instance_private (widget); - if (widget->priv->accessible == NULL) + if (priv->accessible == NULL) { - widget->priv->accessible = + priv->accessible = g_object_new (ST_WIDGET_GET_CLASS (widget)->get_accessible_type (), NULL); - atk_object_initialize (widget->priv->accessible, actor); + atk_object_initialize (priv->accessible, actor); /* AtkGObjectAccessible, which StWidgetAccessible derives from, clears * the back reference to the object in a weak notify for the object; @@ -2493,10 +2572,10 @@ st_widget_get_accessible (ClutterActor *actor) * will result in a new accessible object being created. */ g_object_add_weak_pointer (G_OBJECT (actor), - (gpointer *)&widget->priv->accessible); + (gpointer *)&priv->accessible); } - return widget->priv->accessible; + return priv->accessible; } /** @@ -2522,28 +2601,32 @@ void st_widget_set_accessible (StWidget *widget, AtkObject *accessible) { + StWidgetPrivate *priv; + g_return_if_fail (ST_IS_WIDGET (widget)); g_return_if_fail (accessible == NULL || ATK_IS_GOBJECT_ACCESSIBLE (accessible)); - if (widget->priv->accessible != accessible) + priv = st_widget_get_instance_private (widget); + + if (priv->accessible != accessible) { - if (widget->priv->accessible) + if (priv->accessible) { g_object_remove_weak_pointer (G_OBJECT (widget), - (gpointer *)&widget->priv->accessible); - g_object_unref (widget->priv->accessible); - widget->priv->accessible = NULL; + (gpointer *)&priv->accessible); + g_object_unref (priv->accessible); + priv->accessible = NULL; } if (accessible) { - widget->priv->accessible = g_object_ref (accessible); + priv->accessible = g_object_ref (accessible); /* See note in st_widget_get_accessible() */ g_object_add_weak_pointer (G_OBJECT (widget), - (gpointer *)&widget->priv->accessible); + (gpointer *)&priv->accessible); } else - widget->priv->accessible = NULL; + priv->accessible = NULL; } } @@ -2564,7 +2647,7 @@ st_widget_accessible_get_name (AtkObject *obj) if (widget == NULL) name = NULL; else - name = widget->priv->accessible_name; + name = st_widget_get_accessible_name (widget); } return name; @@ -2651,6 +2734,7 @@ st_widget_accessible_ref_state_set (AtkObject *obj) AtkStateSet *aux_set = NULL; ClutterActor *actor = NULL; StWidget *widget = NULL; + StWidgetPrivate *widget_priv; StWidgetAccessible *self = NULL; result = ATK_OBJECT_CLASS (st_widget_accessible_parent_class)->ref_state_set (obj); @@ -2662,6 +2746,7 @@ st_widget_accessible_ref_state_set (AtkObject *obj) widget = ST_WIDGET (actor); self = ST_WIDGET_ACCESSIBLE (obj); + widget_priv = st_widget_get_instance_private (widget); /* priv->selected should be properly updated on the * ATK_STATE_SELECTED notification callbacks @@ -2684,9 +2769,9 @@ st_widget_accessible_ref_state_set (AtkObject *obj) atk_state_set_remove_state (result, ATK_STATE_FOCUSABLE); /* We add the states added externally if required */ - if (!atk_state_set_is_empty (widget->priv->local_state_set)) + if (!atk_state_set_is_empty (widget_priv->local_state_set)) { - aux_set = atk_state_set_or_sets (result, widget->priv->local_state_set); + aux_set = atk_state_set_or_sets (result, widget_priv->local_state_set); g_object_unref (result); /* previous result will not be used */ result = aux_set; @@ -2699,6 +2784,7 @@ static AtkRole st_widget_accessible_get_role (AtkObject *obj) { StWidget *widget = NULL; + AtkRole role; g_return_val_if_fail (ST_IS_WIDGET_ACCESSIBLE (obj), ATK_ROLE_INVALID); @@ -2707,8 +2793,9 @@ st_widget_accessible_get_role (AtkObject *obj) if (widget == NULL) return ATK_ROLE_INVALID; - if (widget->priv->accessible_role != ATK_ROLE_INVALID) - return widget->priv->accessible_role; + role = st_widget_get_accessible_role (widget); + if (role != ATK_ROLE_INVALID) + return role; return ATK_OBJECT_CLASS (st_widget_accessible_parent_class)->get_role (obj); } diff --git a/src/st/st-widget.h b/src/st/st-widget.h index b089b0308..4f351ea9e 100644 --- a/src/st/st-widget.h +++ b/src/st/st-widget.h @@ -36,30 +36,9 @@ G_BEGIN_DECLS #define ST_TYPE_WIDGET (st_widget_get_type ()) -#define ST_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_WIDGET, StWidget)) -#define ST_IS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_WIDGET)) -#define ST_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_WIDGET, StWidgetClass)) -#define ST_IS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_WIDGET)) -#define ST_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_WIDGET, StWidgetClass)) - -typedef struct _StWidget StWidget; -typedef struct _StWidgetPrivate StWidgetPrivate; -typedef struct _StWidgetClass StWidgetClass; - -/** - * StWidget: - * - * Base class for stylable actors. The contents of the #StWidget - * structure are private and should only be accessed through the - * public API. - */ -struct _StWidget -{ - /*< private >*/ - ClutterActor parent_instance; +G_DECLARE_DERIVABLE_TYPE (StWidget, st_widget, ST, WIDGET, ClutterActor) - StWidgetPrivate *priv; -}; +typedef struct _StWidgetClass StWidgetClass; /** * StWidgetClass: @@ -91,8 +70,6 @@ struct _StWidgetClass GList * (* get_focus_chain) (StWidget *widget); }; -GType st_widget_get_type (void) G_GNUC_CONST; - void st_widget_set_style_pseudo_class (StWidget *actor, const gchar *pseudo_class_list); void st_widget_add_style_pseudo_class (StWidget *actor, -- 2.39.5